This is a library to select single photo or multiple photos in iOS 8 or later using iOS Photos framework. I use this library in my app, Delightful app.
- Tap and hold a photo to preview (zoom).
- Pinch out a photo to preview (zoom).
- Drag to select multiple photos quickly. Simply drag to left or right to start selecting multiple photos.
- Works on both landscape and portrait.
- Using iOS 8's UISplitViewController for albums and photos. You can see the split view on iPhone 6 plus landscape.
- Quickly clear all selections.
- Selected photos are retained when changing album.
- Use Cocoapods:
pod 'DLFPhotosPicker'
or copy all the files inSource
folder to your project. - Present the
DLFPhotosPickerViewController
DLFPhotosPickerViewController *picker = [[DLFPhotosPickerViewController alloc] init];
[picker setPhotosPickerDelegate:self];
[self presentViewController:picker animated:YES completion:nil];
- Implement the delegate methods
#pragma mark - DLFPhotosPickerViewControllerDelegate
- (void)photosPickerDidCancel:(DLFPhotosPickerViewController *)photosPicker {
[photosPicker dismissViewControllerAnimated:YES completion:nil];
}
- (void)photosPicker:(DLFPhotosPickerViewController *)photosPicker detailViewController:(DLFDetailViewController *)detailViewController didSelectPhotos:(NSArray *)photos {
NSLog(@"selected %d photos", photos.count);
[photosPicker dismissViewControllerAnimated:YES completion:nil];
}
- (void)photosPicker:(DLFPhotosPickerViewController *)photosPicker detailViewController:(DLFDetailViewController *)detailViewController configureCell:(DLFPhotoCell *)cell indexPath:(NSIndexPath *)indexPath asset:(PHAsset *)asset {
// customize the cell based on index path and asset. For example, to mark if the asset has been uploaded.
}
- (void)photosPicker:(DLFPhotosPickerViewController *)photosPicker detailViewController:(DLFDetailViewController *)detailViewController didSelectPhoto:(PHAsset *)photo {
[photosPicker dismissViewControllerAnimated:YES completion:^{
[[PHImageManager defaultManager] requestImageForAsset:photo targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeDefault options:nil resultHandler:^(UIImage *result, NSDictionary *info) {
NSLog(@"Selected one asset");
}];
}];
}
- You can check the
SampleViewController
class.
multipleSelections
. Default: YES. Set this to NO to only select one photo. When this property is set to NO, delegate's photosPicker:detailViewController:didSelectPhoto:
will be called. Implement that method to handle selected asset, then dismiss the photos picker.
Nico Prananta @nicnocquee
If you use this library in your app, let me know :)
MIT.