```
一.保存到系統相冊? ? 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:@"設置 -> 百思不得姐 -> 打開允許訪問相冊開關"];
}
}
;
```