This is an iOS, Objective-C alternative to UIImagePickerController
that looks almost exactly the same, but provides the ability to select multiple images. It's as easy to setup as UIImagePickerController
and it works in both portrait and landscape orientations. It requires the addition of AssetsLibrary.framework. This code uses ARC.
Note: Using AssetsLibrary.framework will prompt users to allow use of their location data in order to access their photos.
There are a few ways to add WSAssetPickerController
to your project.
Option 1: Build and add the static library to your project:
- Open the demo project
- Select the
WSAssetPickerCombined
scheme - In the menu bar choose Product > Build
- Copy the generated
WSAssetPicker
directory (found in the builds folder in the project directory) into your project. - Make sure that
libWSAssetPicker-Combined.a
has been added to your targets Build Phases
Option 2:
Copy all the files in the src
directory into your project and be sure 'Copy items to destination group's folder' is checked
Option 3: You can also get the code via CocoaPods (thanks @AlexIzvekov)
- Import the header using
#import "WSAssetPicker.h"
- Create an instance of
WSAssetPickerController
passing a delegate of typeid <WSAssetPickerControllerDelegate>
- Present the
WSAssetPickerController
instance - Implement the delegate methods
- You will also need to include the selection state
png
files:WSAssetViewSelectionIndicator.png
andWSAssetViewSelectionIndicator@2x.png
or make your own.
####Initialization and presentation
WSAssetPickerController *controller = [[WSAssetPickerController alloc] initWithDelegate:self];
[self presentViewController:controller animated:YES completion:NULL];
- (void)assetPickerControllerDidCancel:(WSAssetPickerController *)sender
{
// Dismiss the WSAssetPickerController.
[self dismissViewControllerAnimated:YES completion:NULL];
}
- (void)assetPickerController:(WSAssetPickerController *)sender didFinishPickingMediaWithAssets:(NSArray *)assets
{
// Dismiss the WSAssetPickerController.
[self dismissViewControllerAnimated:YES completion:^{
// Do something with the assets here.
}];
}