A mix between the native iOS 8 gallery and facebooks image picker. It is intended as a replacement for UIImagePickerController for both selecting and taking photos.



To run the example project, clone the repo, and run pod install from the Example directory first.

To use it in you own project

let vc = BSImagePickerViewController()

bs_presentImagePickerController(vc, animated: true,
    select: { (asset: PHAsset) -> Void in
      // User selected an asset.
      // Do something with it, start upload perhaps?
    }, deselect: { (asset: PHAsset) -> Void in
      // User deselected an assets.
      // Do something, cancel upload?
    }, cancel: { (assets: [PHAsset]) -> Void in
      // User cancelled. And this where the assets currently selected.
    }, finish: { (assets: [PHAsset]) -> Void in
      // User finished with these assets
}, completion: nil)


  • Multiple selection.
  • Fullscreen preview
  • Switch albums.
  • No localization needed (uses icons or system localizations).
  • Take photos (it isn't enabled by default, so set takePhotos to true if you want it).
  • Customizable - check out BSImagePickerSettings to see what you can tweak.


You have access to the cancel, album and done button. Customize them as you would with any other UIBarButtonItem (cancel & finish) or UIButton (album).

There are also a few other settings you can tweak. They are documented in BSImagePickerSettings.

Documentation @ cocoadocs

Custom fetch results

Not happy with the fetch results (camera roll and albums) that BSImagePicker uses as default? Set the fetchResults property.


iOS 8


BSImagePicker is available through CocoaPods. To install
it, simply add the following line to your Podfile:

pod "BSImagePicker", "~> 2.8"


Joakim Gyllström, [email protected]