Who is this for?
This course is for experienced developers, with at least an intermediate knowledge of Swift and iOS, who want to learn about the Photos Framework.
- Requesting photo library permissions
- Fetching photo assets, asset collections and collection lists from device library
- Populating table view and collection view using library's photos and albums as data source
- Using photo image request options, ex. sort descriptors, delivery mode, network access allowed, etc.
- Loading asset image content
- Caching images using PHCachingImageManager
- Creating photo albums
- Editing assets
- Observing & responding to photo library changes
Part 1: Build Multiple Asset Picker
Learn how to request device photo library permissions from the user, then fetch the photo library's collections when authorized.
In this episode, learn how to display the various image collection titles in the asset picker's table view.
Set up the picker's table to navigate to the various photo collections, then set up the picker's collection view to load and display the collections' photos.
Persist photo selections between asset picker collections such that selection checkmarks display appropriately.
Use PHCachingImageManager to cache the images in and adjacent to the visible scrolling window, then load the collection view's images from that cache.
Part 2: Manipulate Assets to Generate Collages
Create a photo album for the collages (i.e. "Stitches") or fetch the album if it already exists, then set up a collection view to display that album's images.
Create a new photo asset with a collage of the selected images, save it to the Stitches album, then load a high quality version of the image for display.
"Favorite," "unfavorite" and delete images; set the photo picker's selected image set to the assets referenced in the collage's adjustment data so the user can edit the selections to update the collage.
Implement observers to detect changes in the device's photo library, then update the app's photo preview, table view and collection view appropriately.