我正在使用iOS中的Photos框架爲我的應用程序開發覆蓋層,其工作方式類似於WhatsApp覆蓋層。爲了訪問用戶的圖片資源,我需要使用照片,並且無法使用UIImagePickerController。PHCachingImageManager不緩存Swift 2.3
,以獲得更好的介紹與框架,我決定先建立自己的圖片選擇,我開始了與加載圖片來自我的畫廊,並把它變成一個集合視圖一個簡單的屏幕上。一旦我使用PHAsset.fetchAssets(with: .image, options: fetchOptions) as PHFetchResult<PHAsset>
資產。然後,我在一個陣列中使用這些資產,在默認啓動緩存PHCachingManager如下:
cachingImageManager.startCachingImages(for: self.assets,
targetSize: CGSize(width: 150.0, height: 150.0),
contentMode: .default,
options: nil)
在我cellForItemAtIndexPath爲的CollectionView,我使用:
cachingImageManager.requestImage(for: assets[indexPath.row], targetSize: CGSize(width: 150.0, height: 150.0), contentMode: .default, options: nil, resultHandler: { (image, info) in
cell.imageView.image = image
})
正如您所看到的,按照Apple文檔,我在兩個地方都使用與targetSize,contentMode和options完全相同的緩存,因此,我設置圖像的回調塊應該被調用一次合格ty圖像。
然而,如果我重新加載的CollectionView,或甚至在集合視圖的第一負載,回叫被調用兩次,具有低質量圖像和所述第二時間具有高質量圖像一次。
我不禁想到這是一個錯誤,因爲我爲Photos框架下載了Apple's tutorial code,並且確實如此,即使文檔明確指出如果我們爲資產發送相同的選項contentMode和targetSize,在獲取緩存時只會調用一次。 (即使教程代碼首先加載低質量圖像,然後再加載高質量圖像,無論您重新加載集合多少次)。
任何幫助,因爲我是新來AVFoundation編碼,並通過這個問題已經被難倒是非常讚賞。
對不起,如果這是一個很長的閱讀,但預先感謝任何幫助!
嘗試翠鳥框架圖像捕捉易於使用,並得到莢按您的SWIFT版本。 –
雖然我只需要使用圖庫圖片,但我不需要下載任何東西 – Kunal