2016-07-17 7 views
2

私は、写真ライブラリの画像のリストを表示するコレクションビューを持っています。選択すると、最高品質のバージョンを取り出し、それをトリミングするコントローラを表示します。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は低解像度で複数回正常に呼び出されます。

アイデアや洞察を歓迎しますか?

+0

'synchronous'が' true'に設定されているバックグラウンドスレッドでこれを試してください。 - また、十分に長く待っていることを確認してください。これがネットワーク経由でイメージを取得している場合は、実際には時間がかかるでしょうか? – matt

+0

dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND、0)){...}の内部に入れようとしました。残念ながら同じ動作が見られます。これは、数分待ってもresultHandlerブロックのコードが実行されないということです。 –

+0

これは私のiPadに問題があるのだろうかと思っています。写真アプリでは古い画像を高解像度で読み込む際に問題があり、撮影しているスクリーンショットはカメラロールには向いていません。この角度を調べるつもりです。 –

答えて

4

問題は、テストデバイスの状態が不良だったことです。

主な症状は、Appleのアプリケーションで撮影された新しい写真やスクリーンショットが、カメラロールやフォトアプリのどこにも表示されないことでした。

デバイスのハードリセット(15秒間のホーム+ロック)により、上記の症状が解決され、resultHandlerがHighQualityFormatのために予期された方法で呼び出されました。

+1

いい仕事です。 48時間後にあなた自身の回答を受け入れることができます。 – matt

+1

私は十分にこれを投票することはできません。私は突然何か解決策を受け入れることができない私の作業コードを修正しようと何時間も費やしました。この答えを投稿してくれてありがとう –

関連する問題