私は、写真ライブラリの画像のリストを表示するコレクションビューを持っています。選択すると、最高品質のバージョンを取り出し、それをトリミングするコントローラを表示します。PHImageManager.requestImageForAsset for HighQualityFormatは、決してresultHandlerを呼び出さない
マイコレクションビューの通話が正常に動作します。
let options = PHImageRequestOptions()
options.networkAccessAllowed = true
PHImageManager.defaultManager().requestImageForAsset(asset, targetSize: CGSize(width: 480, height: 640), contentMode:.AspectFit, options:options, resultHandler:{(image, info)in
print("PhotosVC RECEIVED image size \(image!.size.width) x \(image!.size.height)")
cell.ImageView?.contentMode = UIViewContentMode.ScaleAspectFit
cell.ImageView?.image = image
})
resultHandlerは、1回以上呼び出された - 480×360で、後に再び第1復帰60x45、通常2、および。
セルが選択された後、異なるのViewControllerはHighQualityFormatオプションでrequestImageForAssetを呼び出します。
let options = PHImageRequestOptions()
options.networkAccessAllowed = true
options.deliveryMode = PHImageRequestOptionsDeliveryMode.HighQualityFormat
let ret = PHImageManager.defaultManager().requestImageForAsset(asset, targetSize: CGSize(width: 768, height: 1024), contentMode:.AspectFit, options:options, resultHandler:{(image, info)in
print("RootVC RECEIVED image size \(image!.size.width) x \(image!.size.height)")
// stuff here - never called
})
私は私のデバイス(iPadのミニ網膜、iOSの9.3.2)にこのコードを実行するとresultHandlerが呼び出されることはありません。 これは100%の時間でシミュレータ上で呼び出されます。デバイスのみのバグ、または特定の写真に固有のバグ(デバイスで100%再現可能)
この呼び出しではさまざまなバリエーションを試しました。 deliveryMode = HighQualityFormat制約を削除した場合、resultHandlerは低解像度で複数回正常に呼び出されます。
アイデアや洞察を歓迎しますか?
'synchronous'が' true'に設定されているバックグラウンドスレッドでこれを試してください。 - また、十分に長く待っていることを確認してください。これがネットワーク経由でイメージを取得している場合は、実際には時間がかかるでしょうか? – matt
dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND、0)){...}の内部に入れようとしました。残念ながら同じ動作が見られます。これは、数分待ってもresultHandlerブロックのコードが実行されないということです。 –
これは私のiPadに問題があるのだろうかと思っています。写真アプリでは古い画像を高解像度で読み込む際に問題があり、撮影しているスクリーンショットはカメラロールには向いていません。この角度を調べるつもりです。 –