Photo庫使用

PHAsset

  • 靜態(tài)資源類(詳情)

PHAssetCreationRequest

  • 靜態(tài)資源處理類(增刪改查,創(chuàng)建)

PHAssetCollection

  • 相冊文件夾類(相冊)

PHAssetCollectionChangeRequest

  • 相冊文件夾處理類(增刪改查,創(chuàng)建)

PHImageManager

  • 圖片管理類(將靜態(tài)資源轉(zhuǎn)成圖片)(requestImageForAsset)

詳情類可以通過fetch獲取到系統(tǒng)相冊里的相關資源,包裝的請求類可以對齊進行增刪改查創(chuàng)建,圖片管理類可以獲取到圖片對象

所有的修改移動圖片操作都要在[[PHPhotoLibrary sharedPhotoLibrary] performChanges:]方法中執(zhí)行

獲取資源方法

   
//    獲取到所有的靜態(tài)資源
    PHFetchResult<PHAsset *> *  assets=[PHAsset fetchAssetsWithOptions:nil];
    for (PHAsset* asset in assets) {
        [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:CGSizeMake(80, 80) contentMode:PHImageContentModeDefault options:nil resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
            NSLog(@"%@",result);
        }];
    }
    
//    獲取到所有的相冊文件夾
    PHFetchResult<PHAssetCollection *> * collections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
    for (PHCollection* collection in collections) {
        NSLog(@"%@",collection.localizedTitle);
    }
    
//    獲取到相機膠卷目錄
    PHAssetCollection *cameraRoll = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil].firstObject;
    NSLog(@"%@",cameraRoll.localizedTitle);
    

保存圖片

//保存按鈕事件
- (IBAction)savePic:(UIButton *)sender {
    
    PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
    
    switch (status) {
        case PHAuthorizationStatusDenied:
            NSLog(@"授權(quán)拒絕");
            break;
        case PHAuthorizationStatusRestricted:
            NSLog(@"系統(tǒng)原因?qū)е聼o法授權(quán)相冊");
        case PHAuthorizationStatusNotDetermined:{
            
            [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
                [self saveImgToCustomPic];
            }];
        }
            break;
        case PHAuthorizationStatusAuthorized:{
            [self saveImgToCustomPic];
        }
            break;
            
        default:
            break;
    }
    
    
}



/** 把相機膠卷里的圖片保存到自定義相冊里*/
- (void)saveImgToCustomPic
{
    __block NSString *assetId = nil;
    [SVProgressHUD setBackgroundColor:[UIColor blackColor]];
    [SVProgressHUD setForegroundColor:[UIColor whiteColor]];
    phpLibraryHandler(^{
        //        創(chuàng)建一個靜態(tài)資源處理對象 (會自動保存圖片到相機膠卷)
        assetId = [PHAssetCreationRequest creationRequestForAssetFromImage:_imageView.image].placeholderForCreatedAsset.localIdentifier;
    },^(BOOL success, NSError * _Nullable error) {
        if (!success) {
            [SVProgressHUD showErrorWithStatus:@"保存失敗"];
            return ;
        }
        PHAssetCollection *createdCollection = [self getPHAssetCollection];
        phpLibraryHandler(^{
            //                根據(jù)相片標識獲取到相片對象
            PHAsset *assets = [PHAsset fetchAssetsWithLocalIdentifiers:@[assetId] options:nil].lastObject;
            //                獲取到已創(chuàng)建相冊的請求處理對象
            PHAssetCollectionChangeRequest *collectionRequest =[PHAssetCollectionChangeRequest changeRequestForAssetCollection:createdCollection];
            //                給相冊添加相片資源
            [collectionRequest addAssets:@[assets]];
        }, ^(BOOL success, NSError * _Nullable error) {
            
            if (!success) {
                [SVProgressHUD showErrorWithStatus:@"保存失敗"];
                return ;
            }
            [SVProgressHUD showSuccessWithStatus:@"保存成功"];
        });
        
    });
    
}


/**返回相冊對象*/
- (PHAssetCollection*)getPHAssetCollection
{
    PHFetchResult<PHAssetCollection *> * collections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
    for (PHAssetCollection* collection in collections) {
        if ([collection.localizedTitle isEqualToString:libraryName]) {
            return collection;
        }
    }
    
    __block NSString *collerctionId = nil;
    //    同步執(zhí)行相冊創(chuàng)建方法
    [[PHPhotoLibrary sharedPhotoLibrary] performChangesAndWait:^{
        collerctionId = [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:libraryName].placeholderForCreatedAssetCollection.localIdentifier;
    } error:nil];
    return [PHAssetCollection fetchAssetCollectionsWithLocalIdentifiers:@[collerctionId] options:nil].lastObject;
    
    
}

獲取相冊下的所有靜態(tài)資源

 //    獲取到所有的相冊文件夾
    PHFetchResult<PHAssetCollection *> * collections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
    for (PHAssetCollection* collection in collections) {
        
        //        獲取到每個相冊
        NSLog(@"%@",collection.localizedTitle);
        
        //        獲取到該相冊下的所有靜態(tài)資源
        PHFetchResult<PHAsset *> *  assets = [PHAsset fetchAssetsInAssetCollection:collection options:nil];
        for (PHAsset* asset in assets) {
            [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:CGSizeMake(80, 80) contentMode:PHImageContentModeDefault options:nil resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
                NSLog(@"%@",result);
            }];
        }
        
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子术辐,更是在濱河造成了極大的恐慌宽闲,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異转唉,居然都是意外死亡网严,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門艳汽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來猴贰,“玉大人,你說我怎么就攤上這事河狐∶兹疲” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵馋艺,是天一觀的道長栅干。 經(jīng)常有香客問我,道長捐祠,這世上最難降的妖魔是什么碱鳞? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮踱蛀,結(jié)果婚禮上窿给,老公的妹妹穿的比我還像新娘。我一直安慰自己率拒,他們只是感情好崩泡,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著猬膨,像睡著了一般允华。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上寥掐,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天靴寂,我揣著相機與錄音,去河邊找鬼召耘。 笑死百炬,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的污它。 我是一名探鬼主播剖踊,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼庶弃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了德澈?” 一聲冷哼從身側(cè)響起歇攻,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎梆造,沒想到半個月后缴守,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡镇辉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年屡穗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忽肛。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡村砂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出屹逛,到底是詐尸還是另有隱情础废,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布罕模,位于F島的核電站色迂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏手销。R本人自食惡果不足惜歇僧,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锋拖。 院中可真熱鬧诈悍,春花似錦、人聲如沸兽埃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽柄错。三九已至舷夺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間售貌,已是汗流浹背给猾。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留颂跨,地道東北人敢伸。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像恒削,于是被迫代替她去往敵國和親池颈。 傳聞我的和親對象是個殘疾皇子尾序,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容