1. 程式人生 > >IOS10 儲存照片到相簿:用PHPhotoLibrary來代替ALAssetsLibrary

IOS10 儲存照片到相簿:用PHPhotoLibrary來代替ALAssetsLibrary

ios10開始ALAssetsLibrary被標誌為棄用(DEPRECATED),並建議使用Photos framework的PHPhotoLibrary

首先引用Photos framework

#import <Photos/Photos.h>

使用程式碼:

方法1:同步存到系統相簿

__block NSString *createdAssetID =nil;//唯一標識,可以用於圖片資源獲取

NSError *error =nil;

    [[PHPhotoLibrary sharedPhotoLibrary]performChangesAndWait:^{

        createdAssetID = [

PHAssetChangeRequestcreationRequestForAssetFromImage:image].placeholderForCreatedAsset.localIdentifier;

    } error:&error];

方法2:存到某個自定義相簿

[[PHPhotoLibrary sharedPhotoLibrary]performChanges:^{

PHAssetChangeRequest *changeAssetRequest = [PHAssetChangeRequest creationRequestForAssetFromImage

:image];

PHAssetCollection *targetCollection = [[PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil]lastObject];

PHAssetCollectionChangeRequest *changeCollectionRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection

:targetCollection];

PHObjectPlaceholder *assetPlaceholder = [changeAssetRequest placeholderForCreatedAsset];

        [changeCollectionRequest addAssets:@[assetPlaceholder]];

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

NSLog(@"finished adding");

    }];

講解:

1.[PHAssetChangeRequest creationRequestForAssetFromImage:image];

作用是建立一個改變Asset的請求,並將Image或者URL對應的資源放入請求,然後等待處理

2. [[PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil]lastObject];

作用是獲取一個相簿,用於作用圖片處理結果後的放置位置。fetchAssetCollectionsWithType使用type定位

你要儲存的相簿'型別/位置',這個需要兩級的type來定位,第一級分為Album、Smart和Moment三種,

第二級在第一級的基礎上主要分為兩種:Album和Smart,Moment是按照時間分類,所以沒有二級定位,

任何二級引數都可以。(具體type含義:Album使用者建立的相簿分組;Smart:系統建立的分組;Moment:系統生成的時間分組)

最後options為nil代表使用預設的獲取引數(比如時間排序之類,具體按照個人需求)。按照我的例子寫的type是隻有返回一個‘相簿’,

所以lastobject和下標為firstobject是一樣的,但是以Album或者Moment為引數,返回的可能是多個,lastobject取最後一個。

3.[PHAssetCollectionChangeRequest changeRequestForAssetCollection:collection];

作用是建立一個改變Collection的請求

4.PHObjectPlaceholder *assetPlaceholder = [changeAssetRequest placeholderForCreatedAsset];

PHObjectPlaceholder代表一個模型物件的結果,這個結果的提供通過變更請求時建立一個模型物件

5.[changeCollectionRequest addAssets:@[assetPlaceholder]];

最後通過:addAsset來執行最終的結果

相關推薦

IOS10 儲存照片相簿PHPhotoLibrary代替ALAssetsLibrary

ios10開始ALAssetsLibrary被標誌為棄用(DEPRECATED),並建議使用Photos framework的PHPhotoLibrary 首先引用Photos framework

MFC筆記(四)——多執行緒程式設計3_beginthreadex()代替使用CreateThread()

        CreateThread()函式是Windows提供的API介面,在C/C++語言另有一個建立執行緒的函式_beginthreadex(),在很多書上(包括《Windows核心程式設計》)提到過儘量使用_begin

Java 8Stream循環集合

根據 feedback 標題 addall nta -s cti space .com 本文由 ImportNew - 進林 翻譯自 deadcoderising。歡迎加入翻譯小組。轉載請見文末要求。 正如我之前所寫的,Java 8中的新功能特性改變了遊戲規則。對Java開

No.23 經典筆試題(一)巨集計算偏移量,判斷大小端(聯合體法,指標法)

寫一個巨集,計算結構體中某變數相對於首地址的偏移,並給出說明 判斷大小端 程式碼1: //寫一個巨集,計算結構體中某變數相對於首地址的偏移,並給出說明 //定義的這個巨集將結構體裡邊的變數的地址取出後再強轉成char型,然後進行相減。 //注意:&s ==

hivehql做wordcount

用hql來做wordcount 有以下文字檔案: hello tom hello jim hello rose hello tom tom love rose rose

GitHub使用入門(一)Git訪問GitHub

GitHub是為開發者提供的Git倉庫的託管服務。這是一個讓開發者與朋友、同事、同學以及陌生人共享程式碼的完美場所。更多的地方我就不贅述了,總之。GitHub很棒,很棒,上面有很多神奇的程式碼和專案。 我們從這一期開始GitHub入門教程,教你如何使用GitH

分享“視訊”打造你的Splash閃屏頁

實現動畫閃屏頁一般有4種方式: 方式 優點 缺點 Gif 簡單 幀率高時容易OOM VectorDrawable/SVG/PATH動畫 速度快,記憶體小

No.23 經典筆試題巨集計算偏移量,判斷大小端(聯合體法,指標法)

寫一個巨集,計算結構體中某變數相對於首地址的偏移,並給出說明 判斷大小端 程式碼1: //寫一個巨集,計算結構體中某變數相對於首地址的偏移,並給出說明 //定義的這個巨集將結構體裡邊的變數的地址取出後再強轉成char型,然後進行相減。 //注意:&s

Maven實戰maven建立專案(已有專案模板建立專案)

Maven的作用:在曾經的一次面試中,曾經被問到一個問題,maven是個什麼東東。 它的主要主要作用在於:1.構建專案;2.管理依賴;3.管理專案資訊 Maven構建專案:maven構建專案的命令:mvn archetype:generate 當執行這個命

c語言陣列處理求Fibonacci數列問題

用陣列來處理求Fibonacci數列問題。解:程式:#include<stdio.h>int main(){int i, f[20] = { 1,1 };//對最前面兩個元素f[0]和f[1

阿里巴巴王堅資料改變世界

“傳統資訊化建設都是從無到有,加了杆子和機器,但是新一代數字建設就是從有到無,繳費的機器沒有了,你回家繳,杆子沒有了,你回家繳。”

條目四《empty代替檢查size()是否為0》

條目四《用empty來代替檢查size()是否為0》 首先先說結論: empty()實現為行內函數。(眾所周知, 優秀的行內函數的效率比一般函式是高的) 在stl標準庫中,empty()對所有容易的時間複雜度是常數時間, 而對於一些list實現,size()是線性時間的。

【Android效能優化】儘可能RelativeLayout代替多層巢狀的LinearLayout

儘量用RelativeLayout來代替多層巢狀的LinearLayout 在Android UI開發中,有時會遇到較複雜的佈局設計,比如如下: ---------------------------------------              標題      作者             

字串A中出現B時就C代替

這個問題的重點是不使用STL C語言的動態分配記憶體: malloc(分配的位元組大小) free() cstring庫中的函式: strlen() strncmp() strncat() strncpy() 該演算法使用的格外空間大小 O(n

oracle instr函式用法和(oracle instr 代替 like)

對於instr函式,我們經常這樣使用:從一個字串中查詢指定子串的位置。例如: SQL> select instr('oracle','or') position from dual; POSITION ----------         1 從字串'oracle'的第一個位置開始,向後查詢第一個出現

oracle instr函式(oracle instr 代替 like)

對於instr函式,我們經常這樣使用:從一個字串中查詢指定子串的位置。例如: SQL> select instr('oracle','or') position from dual; POSITION ----------         1 從字串'oracle'的第一個位置開始,向後查詢第一個出現

文字太長想隱藏的字省略號代替

white-space: nowrap; overflow: hidden;  tex

tensorflow 1.0 學習別人訓練好的模型進行圖像分類

ima ppi gin 什麽 dir targe spl flow blog 谷歌在大型圖像數據庫ImageNet上訓練好了一個Inception-v3模型,這個模型我們可以直接用來進來圖像分類。 下載地址:https://storage.googleapis.com/d

黃錦宣戶思維,通過獲取用戶

互聯網 社會用戶思維,應該歸類於互聯網思維,簡單直接的命名,基本可以理解為用戶的思維。 其實其闡述的是要以用戶的思維為核心,來運營商業項目,通過站在用戶的立場去思考運營,通過了解用戶的切身的需求,量身訂做出能解決用戶需求的產品。 那麽這裏的了解更多體現的應該是數據型了解,需要大量的用戶數據去了解,這個過程的

99%的戶都選擇恢復丟失的照片

獲取 完整性 spa ima recover http 新一代 win 選擇 目前智能手機拍照功能的不斷提升,已經晉升成了新一代的拍照神器,拍的照片都會保存在手機裏面。當手機內的照片發生誤刪後,大部分的用戶都會使用專業的數據恢復軟件EasyRecovery來恢復手機裏的照片