2016-07-17 7 views
2

필자는 사진 라이브러리 이미지 목록을 제공하는 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가 더 낮은 해상도에서 성공적으로 여러 번 호출됩니다.

아이디어 나 통찰력을 환영합니다.

+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

나는 이것을 충분히 투표 할 수 없다. 갑자기 아무 해결책도 수락하지 않는 작업 코드를 수정하려고 몇 시간을 보냈습니다. 이 답변도 게시 해 주셔서 감사합니다. –