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 = [
} error:&error];
方法2:存到某個自定義相簿
[[PHPhotoLibrary sharedPhotoLibrary]performChanges:^{
PHAssetChangeRequest *changeAssetRequest = [PHAssetChangeRequest creationRequestForAssetFromImage
PHAssetCollection *targetCollection = [[PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil]lastObject];
PHAssetCollectionChangeRequest *changeCollectionRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection
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 8:用Stream來循環集合
根據 feedback 標題 addall nta -s cti space .com 本文由 ImportNew - 進林 翻譯自 deadcoderising。歡迎加入翻譯小組。轉載請見文末要求。 正如我之前所寫的,Java 8中的新功能特性改變了遊戲規則。對Java開
No.23 經典筆試題(一):用巨集來計算偏移量,判斷大小端(聯合體法,指標法)
寫一個巨集,計算結構體中某變數相對於首地址的偏移,並給出說明 判斷大小端 程式碼1: //寫一個巨集,計算結構體中某變數相對於首地址的偏移,並給出說明 //定義的這個巨集將結構體裡邊的變數的地址取出後再強轉成char型,然後進行相減。 //注意:&s ==
hive:用hql來做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來恢復手機裏的照片