Photos.framework에서 iCloud 저장된 이미지를 로드할 수 없는 문제 해결
어제 17일째는 k0mach1씨의 Firebase Authentication의 idToken을 서버 인증에 사용자 서비스의 User와 연결한 이야기(iOS편)이었습니다.
가정 기능
다음과 같은 앱 중 하나의 기능을 생각해보십시오.
빠는거리
다음 복합 요소로 빠졌습니다 ...
iPhoneのストレージ最適化 (Optimize iPhone Strage)
켜기 PHImageManagerMaximumSize
지정 iCloud 설정에서 iPhone의 스토리지 최적화(Optimize iPhone Strage)를 켭니다.
다음
設定 > iCloud > 写真
에서 스토리지 최적화 옵션을 선택한 경우입니다.이 경우 요청 옵션에 다음을 지정하여 iCloud의 사진을 가져올 수도 있습니다.
let requestOptions = PHImageRequestOptions()
requestOptions.isNetworkAccessAllowed = true
그러나 이것만으로는 다음 조건에서 문제가 여전히 문제가 남아 있습니다.
(반대로 말하면, 이것만으로 취득할 수 있던 조건도 있었습니다.)
원래의 사이즈로 취득하기 위한 사이즈 정수 PHImageManagerMaximumSize 를 지정
PHImageManagerMaximumSize
에는 다음 설명이 포함되어 있습니다.// Size to pass when requesting the original image or the largest rendered image available (resizeMode will be ignored)
@available(iOS 8.0, *)
public let PHImageManagerMaximumSize: CGSize
원래 이미지를 얻으려면 원래 크기를 모르기 때문에이 상수를 지정하십시오.
무엇이 문제였는가
이번과 같은 요건을 제대로 채우기 위해서는
isNetworkAccessAllowed = true
뿐만이 아니라, progressHandler
의 처리도 필요했습니다.이번에 당황한 원인은
CollectionView에서 표시하고 있는 이미지와 같이, 사이즈를 지정해 리퀘스트하면 취득할 수 있고, 썸네일상은 취득되어 있는 것처럼 보여 버렸던 점
입니다.
그리고, 스토리지의 최적화의 대상이 되고 있는 화상은, 오리지날로 로드해 볼 때까지, 외관상은 판별할 수 없습니다.
답변
그래서 해결 된 코드입니다.
let requestOptions = PHImageRequestOptions()
requestOptions.version = .current
requestOptions.deliveryMode = .highQualityFormat
requestOptions.isSynchronous = false
requestOptions.isNetworkAccessAllowed = true
requestOptions.progressHandler = { [weak self](progress, error, stop, info) in
print("Loading image from iCloud")
}
PHImageManager.default().requestImage(for: photoAsset.asset,
targetSize: PHImageManagerMaximumSize,
contentMode: .aspectFill,
options: requestOptions,
resultHandler: { [weak self](image, _) in
guard let image = image else { return }
self?.selectedImage = image
})
요약
시간의 제약 때문에, 은근하게 밖에 문서를 조사할 수 없었습니다만, Photos.framework
에 대한 설명은 적고, stack overflow에서도 소량의 정보 밖에 발견되지 않았습니다.
이 부분을 다루는 문서를 알고 계시다면 꼭 알려주세요.
참고
Reference
이 문제에 관하여(Photos.framework에서 iCloud 저장된 이미지를 로드할 수 없는 문제 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yutailang0119/items/53071493a4ec2eca3f5f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
let requestOptions = PHImageRequestOptions()
requestOptions.version = .current
requestOptions.deliveryMode = .highQualityFormat
requestOptions.isSynchronous = false
requestOptions.isNetworkAccessAllowed = true
requestOptions.progressHandler = { [weak self](progress, error, stop, info) in
print("Loading image from iCloud")
}
PHImageManager.default().requestImage(for: photoAsset.asset,
targetSize: PHImageManagerMaximumSize,
contentMode: .aspectFill,
options: requestOptions,
resultHandler: { [weak self](image, _) in
guard let image = image else { return }
self?.selectedImage = image
})
시간의 제약 때문에, 은근하게 밖에 문서를 조사할 수 없었습니다만,
Photos.framework
에 대한 설명은 적고, stack overflow에서도 소량의 정보 밖에 발견되지 않았습니다.이 부분을 다루는 문서를 알고 계시다면 꼭 알려주세요.
참고
Reference
이 문제에 관하여(Photos.framework에서 iCloud 저장된 이미지를 로드할 수 없는 문제 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yutailang0119/items/53071493a4ec2eca3f5f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Photos.framework에서 iCloud 저장된 이미지를 로드할 수 없는 문제 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yutailang0119/items/53071493a4ec2eca3f5f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)