Topics

#33: Photos Framework Basics 🗻

Topics

The Photos Framework is the modern equivalent to the old Assets Library Framework. It's how you access and interact with the user's photo library on iOS and OS X. Here are a few examples of things you can do with it:

Retrieve All Albums

let fetchOptions = PHFetchOptions()

let albums = PHAssetCollection.fetchAssetCollectionsWithType(
  .Album,
  subtype: .Any,
  options: fetchOptions
)

Mark a Photo As A Favorite

PHPhotoLibrary.sharedPhotoLibrary().performChanges({
  let request = PHAssetChangeRequest(forAsset: photo)
  request.favorite = true
}, completionHandler: { (successful, error) in })

Changes must happen asynchronously when working with the Photos Framework so we use a PHAssetChangeRequest to mark a photo as a favorite.

Retrieve an Image at Specific Size

let manager = PHCachingImageManager()

manager.requestImageForAsset(asset,
  targetSize: CGSizeMake(50.0, 50.0),
  contentMode: PHImageContentMode.AspectFill,
  options: nil,
  resultHandler: {
    (image: UIImage?, userInfo: [NSObject : AnyObject]?) in
    // yay image!
  }
)

We didn't specify any options there, but you can use the PHImageRequestOptions to customize if you'd like to allow loading images over the network, as well as get a progress callback as they are downloaded.

Similar Bites