From 8814e38f8100de080db8f6759cbd649e47bdfc33 Mon Sep 17 00:00:00 2001 From: Lee Jun Yan Date: Wed, 15 Mar 2017 15:17:59 +0800 Subject: [PATCH 1/2] Added sortOrder option for displaying asset in oldest or latest order. --- QBImagePicker/QBAssetsViewController.m | 4 ++++ QBImagePicker/QBImagePickerController.h | 6 ++++++ QBImagePicker/QBImagePickerController.m | 1 + 3 files changed, 11 insertions(+) diff --git a/QBImagePicker/QBAssetsViewController.m b/QBImagePicker/QBAssetsViewController.m index 98177684..0ebcd45d 100644 --- a/QBImagePicker/QBAssetsViewController.m +++ b/QBImagePicker/QBAssetsViewController.m @@ -234,6 +234,10 @@ - (void)updateFetchRequest if (self.assetCollection) { PHFetchOptions *options = [PHFetchOptions new]; + if (self.imagePickerController.sortOrder == ByLatestAsset) { + options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]]; + } + switch (self.imagePickerController.mediaType) { case QBImagePickerMediaTypeImage: options.predicate = [NSPredicate predicateWithFormat:@"mediaType == %ld", PHAssetMediaTypeImage]; diff --git a/QBImagePicker/QBImagePickerController.h b/QBImagePicker/QBImagePickerController.h index e7547e59..eb6f40f7 100644 --- a/QBImagePicker/QBImagePickerController.h +++ b/QBImagePicker/QBImagePickerController.h @@ -9,6 +9,10 @@ #import #import +typedef enum { + ByLatestAsset, ByOldestAsset +} Sort; + @class QBImagePickerController; @protocol QBImagePickerControllerDelegate @@ -48,4 +52,6 @@ typedef NS_ENUM(NSUInteger, QBImagePickerMediaType) { @property (nonatomic, assign) NSUInteger numberOfColumnsInPortrait; @property (nonatomic, assign) NSUInteger numberOfColumnsInLandscape; +@property (nonatomic, assign) Sort sortOrder; + @end diff --git a/QBImagePicker/QBImagePickerController.m b/QBImagePicker/QBImagePickerController.m index 99577c54..847b7441 100644 --- a/QBImagePicker/QBImagePickerController.m +++ b/QBImagePicker/QBImagePickerController.m @@ -38,6 +38,7 @@ - (instancetype)init self.minimumNumberOfSelection = 1; self.numberOfColumnsInPortrait = 4; self.numberOfColumnsInLandscape = 7; + self.sortOrder = ByOldestAsset; _selectedAssets = [NSMutableOrderedSet orderedSet]; From f2ec57a8a7c83719a0f8379fe8a10c4eb1038c10 Mon Sep 17 00:00:00 2001 From: Lee Jun Yan Date: Wed, 15 Mar 2017 15:52:28 +0800 Subject: [PATCH 2/2] Updated Demo project & minor code placement change. --- QBImagePicker/QBImagePickerController.h | 8 ++++---- QBImagePickerDemo/Info.plist | 2 ++ QBImagePickerDemo/ViewController.m | 1 + 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/QBImagePicker/QBImagePickerController.h b/QBImagePicker/QBImagePickerController.h index eb6f40f7..8cc33acd 100644 --- a/QBImagePicker/QBImagePickerController.h +++ b/QBImagePicker/QBImagePickerController.h @@ -9,10 +9,6 @@ #import #import -typedef enum { - ByLatestAsset, ByOldestAsset -} Sort; - @class QBImagePickerController; @protocol QBImagePickerControllerDelegate @@ -33,6 +29,10 @@ typedef NS_ENUM(NSUInteger, QBImagePickerMediaType) { QBImagePickerMediaTypeVideo }; +typedef enum { + ByLatestAsset, ByOldestAsset +} Sort; + @interface QBImagePickerController : UIViewController @property (nonatomic, weak) id delegate; diff --git a/QBImagePickerDemo/Info.plist b/QBImagePickerDemo/Info.plist index 0180b3ed..4d261679 100644 --- a/QBImagePickerDemo/Info.plist +++ b/QBImagePickerDemo/Info.plist @@ -43,5 +43,7 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + NSPhotoLibraryUsageDescription + Application requires Photos access to obtain your photos and videos diff --git a/QBImagePickerDemo/ViewController.m b/QBImagePickerDemo/ViewController.m index 0414396e..d7c361c8 100644 --- a/QBImagePickerDemo/ViewController.m +++ b/QBImagePickerDemo/ViewController.m @@ -30,6 +30,7 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath imagePickerController.mediaType = QBImagePickerMediaTypeAny; imagePickerController.allowsMultipleSelection = (indexPath.section == 1); imagePickerController.showsNumberOfSelectedAssets = YES; + imagePickerController.sortOrder = ByLatestAsset; if (indexPath.section == 1) { switch (indexPath.row) {