1. 儲存影片到 Camera Roll
先 import AssetsLibrary
@import AssetsLibrary;
用 writeVideoAtPathToSavedPhotosAlbum 方法,將影片存入 Camera Roll(還是叫 Photo Album,不知道哪一個說法比較多?)
NSURL *videoUrl = [NSURL fileURLWithPath:videoPath];
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library writeVideoAtPathToSavedPhotosAlbum:videoUrl completionBlock:^(NSURL *assetURL, NSError *error) {
}];
2.從Camera Roll 刪除影片
這個方法只能使用在 iOS 8 以上的版本,據說 iOS8 之前的版本沒有辦法進行刪除的操作。並且,只能使用在由你的 APP 所建立的影片或是照片上。也就是說,如果在 Camera Roll 裡面的影片或是照片,不是由你的 APP 所建立,你依然無法對此進行刪除操作。
先 import Photos
@import Photos;
接著,因為我們使用 PHAssetChangeRequest 的 deleteAssets 方法,從 Camera Roll 裡面刪除影片,但是查詢 Apple 的 API document 會發現,
+ (void)deleteAssets:(id)assets assets: An array of PHAsset objects to be deleted.
deleteAssets 要傳入的是 PHAsset,而上面新增影片到 Camera Roll 的方法,會回傳的只有 assetURL,所以我們必須透過這個 assetURL 取得 PHAsset。
像這樣,找到 PHAsset 後,就可以將它從 Camera Roll 中刪除拉!
PHFetchResult *assetsFetchResult = [PHAsset fetchAssetsWithALAssetURLs:[NSArray arrayWithObjects:self.assetURL, nil] options:nil];
PHAsset *phAsset =[assetsFetchResult firstObject];
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
[PHAssetChangeRequest deleteAssets:[NSArray arrayWithObjects:phAsset, nil]];
} completionHandler:^(BOOL success, NSError *error) {
NSLog(@"Finished deleting asset");
}];
特色圖片來源: Designed by Freepik