필자는 사진 라이브러리 이미지 목록을 제공하는 Collection View를 가지고 있으며, 선택시 최고 품질의 버전을 가져오고 자르는 컨트롤러를 제시하고자합니다.PHImageManager.requestImageForAsset for HighQualityFormat 결코 resultHandler를 호출하지 않습니다.
내 콜렉션 뷰의 통화가 제대로 작동합니다. 다음 나중에 다시되는 480x360에서를 일반적으로 두 첫 번째 반환 60x45, 그리고 -
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
한 번 이상이라고합니다. 셀을 선택한 후 는, 다른의 ViewController는 HighQualityFormat 옵션 requestImageForAsset를 호출 : 내 장치 (아이 패드 미니 레티 나, 아이폰 OS 9.3.2)에이 코드를 실행하면 resultHandler가 호출되지 않습니다
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
})
. 시뮬레이터에서 100 % 호출됩니다. 기기 전용 버그 또는 특정 사진에만 해당하는 버그 (기기에서 100 % 재생산 가능)
나는이 호출에서 다양한 변형을 시도했습니다. deliveryMode = HighQualityFormat 제약 조건을 제거하면 resultHandler가 더 낮은 해상도에서 성공적으로 여러 번 호출됩니다.
아이디어 나 통찰력을 환영합니다.
'synchronous'가'true'로 설정된 백그라운드 스레드에서이 작업을 시도하십시오. - 또한 충분히 오랫동안 기다리고 있는지 확인하십시오. 이것이 네트워크를 통해 가져 오는 이미지라면 어쩌면 정말로 시간이 걸릴 것입니까? – matt
dispatch_async (dispatch_get_global_queue (QOS_CLASS_BACKGROUND, 0)) 내부에 넣으려고했습니다. {...}; 여전히 불행히도 동일한 동작을 보았습니다. 즉, 몇 분 정도 기다렸다가 resultHandler 블록의 코드가 실행되지 않습니다. –
이것이 내 iPad의 문제 일 수 있는지 궁금해지기 시작합니다. 사진 앱은 오래된 이미지를 고해상도로로드하는 데 문제가 있으며 캡처하는 스크린 샷은 카메라 롤에 표시되지 않습니다. 이 각도를 조사하려고합니다. –