需求:最近添加圖片的快捷提示,當用戶點擊擴展按鈕(“+” 號按鈕)時,進行圖片快捷提示(類似于微信)
思路:用戶點擊“+”號按鈕時,檢索相冊中 30s 內最新添加的圖片并展示
核心代碼:
#import <PhotosUI/PhotosUI.h>
- (void)getRecentlyAddedPhoto:(void (^)(UIImage * _Nullable image, NSDictionary * _Nullable info))resultHandler {
// 獲取相冊
// 這里的 subtype 可以傳其他參數:比方說 PHAssetCollectionSubtypeSmartAlbumScreenshots 截圖,這里用的是用戶所有的圖片資源
PHFetchResult *collectionResult = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil];
// 獲取資源時的參數(與當前時間相差 30s 內的圖片)
PHFetchOptions *options = [[PHFetchOptions alloc] init];
options.wantsIncrementalChangeDetails = YES;
options.predicate = [NSPredicate predicateWithFormat:@"creationDate > %@", [[NSDate date] dateByAddingTimeInterval:(-30)]];
// sortDescriptors:排序
options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];
if (collectionResult.count > 0) {
PHFetchResult *fetchResult = [PHAsset fetchAssetsInAssetCollection:[collectionResult firstObject] options:options];
if (fetchResult.count > 0) {
PHImageRequestOptions *requestOptions = [[PHImageRequestOptions alloc] init];
// 讓 requestImage... 系列的方法變成同步操作
requestOptions.synchronous = YES;
// 獲取原圖
[[PHImageManager defaultManager] requestImageForAsset:[fetchResult firstObject] targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeAspectFit options:requestOptions resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
if (result) {
resultHandler(result, info);
} else {
resultHandler(nil, nil);
}
}];
}
resultHandler(nil, nil);
} else {
resultHandler(nil, nil);
}
}
相關屬性
PHAssetCollectionType:
PHAssetCollectionTypeAlbum 相冊
PHAssetCollectionTypeSmartAlbum 智能相冊
PHAssetCollectionTypeMoment 時刻
PHAssetCollectionSubtype:
常規的子類型
PHAssetCollectionSubtypeAlbumRegular 常規的
PHAssetCollectionSubtypeAlbumSyncedEvent 使用 iTunes 同步操作過來的相冊
PHAssetCollectionSubtypeAlbumSyncedFaces 使用 iTuens同步操作過來的人物相冊
PHAssetCollectionSubtypeAlbumSyncedAlbum 使用iTunes 同步的所有相冊
PHAssetCollectionSubtypeAlbumImported 從外界導入的相冊
經分享的子類型
PHAssetCollectionSubtypeAlbumMyPhotoStream 從相冊分享得到
PHAssetCollectionSubtypeAlbumCloudShared 從 cloud 分享得到
智能相冊子類型
PHAssetCollectionSubtypeSmartAlbumGeneric 通用的
PHAssetCollectionSubtypeSmartAlbumPanoramas 全景
PHAssetCollectionSubtypeSmartAlbumVideos 視屏
PHAssetCollectionSubtypeSmartAlbumFavorites 收藏
PHAssetCollectionSubtypeSmartAlbumTimelapses 延時視屏,也會在PHAssetCollectionSubtypeSmartAlbumVideos在出現
PHAssetCollectionSubtypeSmartAlbumAllHidden 隱藏的
PHAssetCollectionSubtypeSmartAlbumRecentlyAdded 最近添加
PHAssetCollectionSubtypeSmartAlbumBursts 連拍
PHAssetCollectionSubtypeSmartAlbumSlomoVideos Slomo是slow motion的縮寫,高速攝影慢動作解析
PHAssetCollectionSubtypeSmartAlbumUserLibrary 用戶所有的資源
PHAssetCollectionSubtypeSmartAlbumSelfPortraits 所有前置攝像頭拍的照片和視屏
PHAssetCollectionSubtypeSmartAlbumScreenshots 所有的截屏圖
不關心子類型時的全部資源
PHAssetCollectionSubtypeAny = NSIntegerMax
相關屬性參考自:PhotoKit