相冊獲取

  • 之前的代碼 自己看看
#pragma mark 相冊操作
- (void)getOriginalImages{       
//獲取所有自定義相簿    
    PHFetchResult*assetCollections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];   
//便利所有相冊簿    
    for (PHAssetCollection *assetCollection in assetCollections) {       
        [self enumerateAssetsInAssetCollection:assetCollection original:YES];       
      NSLog(@"相冊名%@",assetCollection.localizedTitle);    
    }   
//    PHAssetCollection *cameraRoll = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil].lastObject;
//    [self enumerateAssetsInAssetCollection:cameraRoll original:YES];
}
//獲取所有相冊中的縮略圖 //沒用
- (void)getThumbnailImages{        
    PHFetchResult*assetCollections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];        
    for (PHAssetCollection *assetCollection in assetCollections) {        
        [self enumerateAssetsInAssetCollection:assetCollection original:NO];  
     }
    PHAssetCollection *cameraRoll = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil].lastObject;   
    [self enumerateAssetsInAssetCollection:cameraRoll original:NO];
}
/* 遍歷相冊中的原圖 @param assetCollection 相冊 @param original 是否要原圖  */
- (void)enumerateAssetsInAssetCollection:(PHAssetCollection *)assetCollection original:(BOOL)original{        
    PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];    
//同步獲得智慧返回一張    options.synchronous = YES;      
//獲得某個相冊中所有的phasset對象   
    PHFetchResult*assets = [PHAsset fetchAssetsInAssetCollection:assetCollection options:nil];
//    NSLog(@"圖片數量:%lu",(unsigned long)assets.count);
    if(assets.count){
        ZCCPhoneAlbumModel *albumModel = [[ZCCPhoneAlbumModel alloc] init];
//        NSLog(@"相冊名%@",assetCollection.localizedTitle);
//相冊名給對象
        albumModel.photoAlbumName = assetCollection.localizedTitle;
        NSMutableArray *picsArray = [NSMutableArray array];
        for (PHAsset *asset in assets) {
//        CGSize size = original ? CGSizeMake(asset.pixelWidth, asset.pixelHeight) :         CGSizeZero;
//寬大于高 就把高變成 asset.pixelHeight * COLLECTIONWIDTH/asset.pixelHeight
            CGFloat width = 0;
            CGFloat height = 0;
//寬大于高 壓縮高
            if(asset.pixelWidth > asset.pixelHeight){
                width = asset.pixelWidth * COLLECTIONWIDTH/asset.pixelHeight;
                height = COLLECTIONWIDTH;
            }else{//寬小于高 壓縮寬
                width = COLLECTIONWIDTH;
                height = asset.pixelHeight * COLLECTIONWIDTH/asset.pixelWidth;
            }
            CGSize size = CGSizeMake(width, height);
//從asset中獲得圖片
            [[PHImageManager defaultManager] requestImageForAsset:asset 
                                             targetSize:size 
                                             contentMode:PHImageContentModeDefault 
                                             options:options 
                                             resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
//                NSLog(@"%@",result);
                                                [picsArray addObject:result];
                                             }];
         }
          albumModel.photos = picsArray;
          //把這個相冊對象添加到相冊數組中
          [self.photoAlbums addObject:albumModel];
     }
}
其實這里可以通過 打開collectionView獲取contentoffsize來判斷當前滑動位置 然后 加載 總圖片的對應階段圖片 邊滑動邊加載 這樣就不會造成剛點開的卡頓了  有空實現一下。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容