首先列出我遇到的幾個問題;
1、縮略圖的問題
2拍谐、手機使用了iCloud 原圖獲取問題
第一問題:
對于縮略圖的問題 我們使用PHImageRequestOptions 配置定制請求渔呵,返回裁剪過的圖片
normalizedCropRect 設(shè)置剪裁的大小
options.resizeMode = PHImageRequestOptionsResizeModeExact;
文檔這樣定義 在設(shè)置 normalizedCropRect 的時候 必須定義 ?resizeMode = PHImageRequestOptionsResizeModeExact;
synchronous 屬性是否同步 一般設(shè)置位異步的 防止線程阻塞
networkAccessAllowed 如果手機開啟了iCloud 這個設(shè)置開啟才能獲取到原始圖片。
deliveryMode 設(shè)置圖片質(zhì)量
第二個問題:
發(fā)現(xiàn)好多的應(yīng)用都有這個問題赔蒲。在開啟icloud 的時候沒法選取圖片泌神。
注明:以下的圖片獲取都旨在獲取原始圖片
如果你的手機開啟了iCloud 并且你的照片同步到了云端。那么你如果想要獲取原始圖片就要從云端獲取舞虱。
networkAccessAllowed ?這個屬性設(shè)置開啟的話欢际,如果本地沒有原始圖片的話,就從iCloud 上獲取原始圖片矾兜。關(guān)閉的話那就拿不到這張圖片的原始圖片损趋。
synchronous 屬性是否同步 。如果我們設(shè)置為異步(NO)的話(相冊開發(fā)一般的都設(shè)置位異步) requestImageForAsset 請求會有兩次回調(diào)椅寺。第一次返回一個低質(zhì)量的圖片浑槽,用于占位顯示,第二次返回的是一個高質(zhì)量的圖(原圖)返帕。如果設(shè)置為同步的請求的話桐玻,就只有一次的回調(diào),返回一個高質(zhì)量的圖(原圖)
所以我們開發(fā)相冊的時候使用異步獲取荆萤,這樣體驗更好镊靴,當(dāng)要預(yù)覽大圖的時候,我們可以模仿ios 系統(tǒng)的做法链韭,異步請求第一次獲取低質(zhì)量的圖片用于占位顯示偏竟,然后加一個小巧的精度條來加載大圖。
但是我們在選取圖片的時候就要使用同步<你也可以在子線程中把這個任務(wù)加到同步隊列中執(zhí)行敞峭,這樣的話你就可以加一個進度條等待>的方法中去做踊谋,為什么要這樣做呢,這樣就可以保證你選取的圖是原圖而不是模糊的低質(zhì)量的圖片了