簡體   English   中英

PHCachingImageManager不緩存Swift 2.3

[英]PHCachingImageManager not caching Swift 2.3

我正在使用iOS中的“照片”框架來為我的應用程序開發一個疊加層,該疊加層的工作方式類似於WhatsApp疊加層。 為了訪問用戶的圖庫圖像資源,我需要使用Photos,而不能使用UIImagePickerController。

為了更好地引入該框架,我決定首先構建自己的圖像選擇器,然后開始從圖庫中加載圖像並將其放入一個簡單的屏幕上的集合視圖中。 一旦我使用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)

在我的collectionView的cellForItemAtIndexPath中,我使用:

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的緩存,因此,設置圖像的回調塊應與高質量圖像完全調用一次。

但是,如果我重新加載collectionView,或者甚至在第一次加載視圖時,則兩次調用該回調,一次調用低質量圖像,第二次調用高質量圖像。

我忍不住認為這是一個錯誤,因為我下載了Apple的 Photos框架的教程代碼 ,即使文檔特別指出,如果我們為資產發送相同的選項,contentMode和targetSize,它也會執行正確的操作僅在緩存時一次。 (即使您重新加載了收藏集幾次,本教程代碼也首先加載了低質量的圖像,然后加載了高質量的圖像)。

由於我是AVFoundation編碼的新手,因此我對此問題深感困惑,因此將不勝感激。

如果這是一本很長的書,很抱歉,但是在此先感謝您的幫助!

閱讀有關PHImageRequestOptions和屬性deliveryMode可能默認值設置為opportunistic

案例機會

照片會自動提供一個或多個結果,以平衡圖像質量和響應速度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM