LibraryController
@objcMembers
public class LibraryController : UIViewController
The LibraryController offers a way to quickly select and crop images or videos from the users Photo Library. Users can switch between regular albums, smart albums, iCloud albums, or albums imported directly from a DSLR
camera. In addition, there is a separate section for selecting and deleting drafts.
Figure 1 Library controller
![]()
This controller is used inside the ContainerController and can be used on its own by initializing
the container controller with only one mode .library.
For more information on modifying the cropping behavior of the library controller see its PreviewCropController.
The library controller can also be restricted to only display certain types of media. For example images only:
containerController.libraryController.fetchPredicate = NSPredicate(format: "mediaType == %d", PHAssetMediaType.image.rawValue)
containerController.libraryController.draftMediaTypes = [.image]
By default, the library controller pushes an EditController onto the navigation stack when the Next button is pressed. This can be disabled by setting
showsEditControllerWhenDone to false. You will also need to implement the LibraryControllerDelegate in order to respond the libraryController(_:didFinishWithSession:withSegment:) delegate
method.
-
Set this delegate in order to handle events that occur in this controller.
Default value:
nilDeclaration
Swift
public weak var delegate: LibraryControllerDelegate? -
Set this to false if you do not want the
EditControllerpushed onto the navigation stack after the user presses the Next button.You can push your own controller or dismiss this controller in the
libraryController(_:didFinishWithSession:withSegment:)delegate method.Default value:
trueDeclaration
Swift
public var showsEditControllerWhenDone: Bool
-
Set this if you need to restrict the users Photo Library to a certain type of media.
Only images for example:
libraryController.fetchPredicate = NSPredicate(format: "mediaType == %d", PHAssetMediaType.image.rawValue)Default value:
nilDeclaration
Swift
public var fetchPredicate: NSPredicate? -
Set this if you need to restrict the users Drafts to a certain type of media.
Only images for example:
libraryController.draftMediaTypes = [.image]Default value:
[.image, .video]Declaration
Swift
public var draftMediaTypes: [MediaType] { get set } -
When false, each video draft will appear as one draft.
When true, each video draft will be displayed as individual segments. For example, if a video has 3 segments the draft will instead appear as 3 separate drafts.
Default value:
falseDeclaration
Swift
public var splitVideoDraftsIntoSegments: Bool { get set }
-
The Cancel button in the top left corner of this controller.
Declaration
Swift
@IBOutlet public private(set) var cancelButton: UIButton! { get } -
The Next button in the top right corner of this controller.
Declaration
Swift
@IBOutlet public private(set) var nextButton: UIButton! { get } -
This activity indicator may briefly appear in place of the
nextButtonafter it is pressed.Declaration
Swift
@IBOutlet public private(set) var activityIndicatorView: UIActivityIndicatorView! { get }
-
This is the square preview controller at the top of this controller responsible for displaying and cropping media. Use this to customize cropping behavior.
Declaration
Swift
public let previewCropController: PreviewCropController
View on GitHub
LibraryController Class Reference