(1) C 언어의 함수 방식
참고 : UIImageWriteToSavedPhotosAlbum 방법은, 그렇지 않으면 붕괴 것, 프록시 메소드를 구현해야합니다.
// 매개 변수 1 : 그림 개체 // 매개 변수 2 : 대상 바인딩의 성공적인 방법 // 성공적으로 메소드 호출 한 후 : 매개 변수 3 // 매개 변수 4 : 정보를 전달하기 위해 필요 (매개 변수 성공적인 메소드 호출 후) UIImageWriteToSavedPhotosAlbum을 (self.imageView.image , 자기, @selector (이미지 : didFinishSavingWithError :에서는 ContextInfo :) 무기 호) 의 #pragma 마크 - <앨범에 저장> - ( 무효 ) 이미지 : (있는 UIImage *) 이미지 didFinishSavingWithError : (NSError *) 오류에서는 ContextInfo :( 무효 * )에서는 ContextInfo { 있는 NSString * MSG = 무기 호; IF (오류) { MSG = @ " 이미지를 저장 실패 " ; } 그렇지 않으면 { MSG = @ "사진 성공을 저장합니다 " ; } }
방법 2 : 프레임 워크는 사진을 구현
2.1 Photos01- 기본적인 이해
PHAsset : 한 PHAsset 객체는 사진 앨범이나 비디오 나타냅니다
PHAssetCollection을하십시오 PHAssetCollection 대상이 앨범을 나타냅니다
우리는 카메라 롤 []에 이미지를 저장하려면, 우리는 먼저 PHAsset 어떻게 이러한 개체를 조작하는 새로운 객체를 추가 할 수 있도록해야합니까? 아무것도하지만, 이러한 개체 CRUD.
PHAsset
一个PHAsset对象就代表相册中的一张图片或者一个视频
CRUD 작업에 사진 / 비디오 관련 변경 사항을 포함 PHAssetChangeRequest찰스 [PHAsset fetchAssets ...];
PHAssetCollection
一个PHAssetCollection 对象就代表一个相册
CRUD PHAssetCollectionChangeRequest 앨범은 운영과 관련된 모든 수정 사항을 포함
수색
[PHAssetCollection fetchAssetCollectionsContainingAsset:...];
2.2 Photos02-은 카메라 롤에 이미지를 저장
// [카메라 롤에 사진을 저장할 /// 비동기 작업 수정 [PHPhotoLibrary sharedPhotoLibrary] performChanges을 ^ { [PHAssetChangeRequest creationRequestForAssetFromImage : self.imageView.image] } CompletionHandler : ^ (BOOL 성공은 NSError * _Nullable 에러) { IF (오류) { NSLog ( @ " %의 @ " , @ " 저장 실패 " ); } 다른 { NSLog ( @ " %의 @ " , @ " 성공적으로 저장 " ); } }];
2.3 Photos03-는 새 앨범을 만듭니다
* 오류 = NSError의 무기 호; [[PHPhotoLibrary sharedPhotoLibrary] performChangesAndWait : ^ { // 얻을 응용 프로그램 이름 있는 NSString * 제목 = [NSBundle mainBundle] .infoDictionary [(__ 다리는 NSString * ) kCFBundleNameKey]; // 생성 사용자 정의 앨범 [] [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle : 표제] } 오류 : & 에러];
2.4 Photos04- 조회 앨범
표제는 NSString * = [NSBundle mainBundle] .infoDictionary [(__ 다리는 NSString * ) kCFBundleNameKey]; // 查询所有【自定义相册】 PHFetchResult <PHAssetCollection *> * 컬렉션 = [PHAssetCollection fetchAssetCollectionsWithType : PHAssetCollectionTypeAlbum 아형 : PHAssetCollectionSubtypeAlbumRegular 선택해 닐]; PHAssetCollection * createCollection = 닐; 대 (PHAssetCollection * 컬렉션 에서 수집) { 경우 ([collection.localizedTitle isEqualToString : 표제]) { createCollection = 컬렉션; 휴식 ; } } 경우(createCollection == 닐) { // 이 앨범 생성 앱 대응되지 // 생성 맞춤 앨범 [A] NSError * 오류 = 닐; __block에있는 NSString * createCollectionID = 닐] [PHPhotoLibrary sharedPhotoLibrary] performChangesAndWait : ^ { // 맞춤 앨범] 생성 createCollectionID = ; .placeholderForCreatedAssetCollection.localIdentifier 제목 : [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle] } 오류 : & 에러] createCollection를 =[PHAssetCollection의 fetchAssetCollectionsWithLocalIdentifiers를 @ [createCollectionID] 선택해 닐] .firstObject; } NSLog ( @ " %의 @ " , createCollection);
2.5 Photos05- 사용자 지정 앨범에 이미지를 저장
// 1. 먼저 카메라 롤 []로 이미지 저장 /// 동작 수정 동기화 * 오류 = NSError를 , 무 __block의 PHObjectPlaceholder * 자리 = ; 닐 [[PHPhotoLibrary sharedPhotoLibrary] performChangesAndWait ^ { 자리 = [PHAssetChangeRequest creationRequestForAssetFromImage : self.imageView을 이미지입니다] .placeholderForCreatedAsset; } 오류 : & 오류] IF (오류) { NSLog ( @ " 저장 실패 " ); 반환 ; } // 2] 맞춤형 앨범을 가지고 PHAssetCollection * assetCollection =self.createCollection; IF (assetCollection == 전무) { NSLog ( @ " 앨범 실패 만들기 " ); } // 바로 카메라 롤] 사용자 정의 앨범에 대한 참조 내부 [사진] [에 저장 3. [[PHPhotoLibrary sharedPhotoLibrary] performChangesAndWait ^ { PHAssetCollectionChangeRequest * requtes의 = [PHAssetCollectionChangeRequest changeRequestForAssetCollection : assetCollection] [requtes의 addAssets @ [자리]; } 오류 : & 에러] IF (에러) { NSLog ( @ " 이미지를 저장 실패 " ) } 다른 { NSLog ( @ " 그림 저장 성공 " ); }