UIImagePickerController не возвращает живое фото в iOS 13 - PullRequest
0 голосов
/ 12 октября 2019

Мой код перестал работать в iOS 13. В моем делегате UIImagePickerController я проверяю, является ли возвращаемый тип носителя (тип, выбранный пользователем) живой фотографией. Если это так, я использую клавишу .livePhoto, чтобы получить PHLivePhoto. Это раньше работало. Но в iOS 13 значение этого ключа всегда nil. Как я могу получить живую фотографию, которую выбрал пользователь?

1 Ответ

0 голосов
/ 12 октября 2019

Я считаю это изменение поведения ошибкой. Однако, если у вас есть разрешение на доступ к библиотеке фотографий пользователя, вы можете использовать значение .phAsset, PHAsset, чтобы получить соответствующий PHLivePhoto непосредственно из библиотеки фотографий самостоятельно.

        let asset = info[.phAsset] as? PHAsset
        if let style = asset?.playbackStyle {
            switch style {
            case .livePhoto:
                // hmm, I'm getting .livePhoto but live _is_ nil!
                if live != nil {
                    self.showLivePhoto(live!)
                } else {
                    print("live is nil!")
                    // well then I'll fetch it myself, said the little red hen
                    if let asset = asset {
                        PHImageManager.default().requestLivePhoto(
                            for: asset, targetSize: self.redView.bounds.size, 
                            contentMode: .aspectFit, options: nil) { 
                            photo, info in
                            if let photo = photo {
                                self.showLivePhoto(photo)
                            }
                        }
                    }
                }
            // ... other cases ...
            @unknown default: fatalError()
            }
        }
...