在iOS中實(shí)現(xiàn)相冊多選的思路是先從資源中拿出相片,然后放在collectionView中(也可以自己自定義隨便的view,容器能放圖就行)。然后實(shí)現(xiàn)在collectionView中多選就可以了。
要從系統(tǒng)中取得照片資源,需要用到 AssetsLibrary.framework 。它里面有取照片視頻等資源的方法。
關(guān)于讀取這些資源的方法,請前往ALAsset,ALAssetsLibrary,ALAssetsgroup常見屬性及用法
這個應(yīng)該是比較詳細(xì)的了。
我自己也根據(jù)這個東西自己做了個多選相冊的,拋磚引玉。希望大家給出更好的作品。效果如下:
項(xiàng)目源碼:https://github.com/smalldu/swiftPickMore
在做這個的時候,遇到一個坑,在這里和大家分享下。
非托管對象(Unmanaged Objects)
當(dāng) Swift 導(dǎo)入 unannotated 的APIs時,編譯器將不會自動地對返回的 Core Foundation 對象進(jìn)行內(nèi)存管理托管。Swift 將這些返回的 Core Foundation 對象封閉在一個Unmanaged結(jié)構(gòu)中。那些間接返回 Core Foundation 的對象也是非托管的。
而我這里就用到一個ALAsset對象的aspectRatioThumbnail方法返回Unmanaged對象,所以在這里使用takeUnretainedValue() 這個方法將它轉(zhuǎn)換為內(nèi)存管理的對象,剛開始一直用takeRetainedValue()一只報(bào)野指針 坑了好久。?,F(xiàn)在代碼里還有一處沒有改好像。。