IOS把圖片保存到系統相冊

```

一.保存到系統相冊? ? 1.調用系統的方法,必須用系統的方法? ? UIImageWriteToSavedPhotosAlbum(self.imageView.image, self, @selector(image:didFinshSavingWithError:contextInfo:), nil);? ? 2.調用方法,發揮保存是否成功的信息? ? -(void)image:(UIImage *)image didFinshSavingWithError:(NSError *)error contextInfo:(void*)contextInfo{? ? if (error) {? ? ? ? [SVProgressHUD showErrorWithStatus:@"保存失敗"];? ? }else? ? {? ? ? ? [SVProgressHUD showSuccessWithStatus:@"保存成功"];? ? }}```----------------````二.保存到自定義相冊? ? 1.蘋果保存圖片到自己相冊業務邏輯:把圖片保存到系統相冊中,在從系統相冊中拷貝一份到自己相冊.? ? 2.使用蘋果的框架.

3. photos框架:專門處理相冊

4.pgotos框架基本類

PHPhotoLibrary:相簿(所有相冊集合)

PHAsset:圖片(資源文件)

PHAssetCollection:相冊(所有圖片集合)

PHAssetCreationRequest:創建,刪除,修改圖片,必須要有這個類

PHAssetCollectionChangeRequest:創建,刪除,修改相冊,必須要創建這個類

photos框架使用規則:要操作相冊或者相片,必須發送請求

````

-------

```

三. photos框架的基本使用

//搜索自定義相冊

- (PHAssetCollection *)fetchAlbum

{

//? ? 獲取系統相冊

PHFetchResult *resul = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];

//? ? 遍歷系統相冊

for (PHAssetCollection *assetCollection in resul) {

if ([assetCollection.localizedTitle isEqualToString:XMGAlbumTitle]) {

return assetCollection;

}

}

return nil;

}

//保存圖片方法

-(void)savePhoto

{

[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{

//? ? 判斷是否已經存在相冊,如果已經存在,保存到之前相冊,無則創建相冊

PHAssetCollection *album = [self fetchAlbum];

// 創建相冊請求類

PHAssetCollectionChangeRequest *assetCollectionChangeRequest;

if (album) {

// 獲取相冊

assetCollectionChangeRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:album];

}else{

//? ? 創建自己的相冊(相冊請求類:創建相冊)

PHAssetCollectionChangeRequest *assetCollectionChangeRequest = [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:XMGAlbumTitle];

}

//? ? 創建圖片請求類

PHAssetCreationRequest *assetCreationRequest = [PHAssetCreationRequest creationRequestForAssetFromImage:self.imageView.image];

//? ? 添加圖片到相冊(相冊請求類)

[assetCollectionChangeRequest addAssets:@[assetCreationRequest.placeholderForCreatedAsset]];

} completionHandler:^(BOOL success, NSError * _Nullable error) {

if (success) {

[SVProgressHUD showSuccessWithStatus:@"保存成功"];

}else{

[SVProgressHUD showErrorWithStatus:@"保存失敗"];

}

}];

}

```

---------------

```

四.photos框架的用戶授權問題

獲取用戶訪問相冊狀態

PHAuthorizationStatusNotDetermined : 不決定

PHAuthorizationStatusRestricted :? ? 手機被家長控制,不能修改狀態

PHAuthorizationStatusDenied? ? :拒絕

PHAuthorizationStatusAuthorized? ? :允許

---------------------------------------------------------

switch ([PHPhotoLibrary authorizationStatus]) {

case PHAuthorizationStatusNotDetermined:

{

// 不確定 => 彈出框,詢問用戶是否允許訪問系統相冊

[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {

if (status == PHAuthorizationStatusAuthorized) {

// 保存圖片

[self savePhoto];

}

}];

break;

}

case PHAuthorizationStatusAuthorized:

{

// 授權 => 保存圖片

[self savePhoto];

break;

}

default:

{

// 拒絕 => 彈出框,告訴用戶,允許訪問相冊

[SVProgressHUD showInfoWithStatus:@"設置 -> 百思不得姐 -> 打開允許訪問相冊開關"];

}

}

;

```

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容