UIImagePickerController在iOS 13中不返回实时照片

时间:2019-10-12 14:56:34

标签: ios uiimagepickercontroller ios13 phlivephoto

我的代码已在iOS 13中停止工作。在我的UIImagePickerController委托中,我查看返回的媒体类型(用户选择的类型)是否为实时照片。如果是的话,我使用.livePhoto键来获取PHLivePhoto。这曾经工作。但是在iOS 13中,此键的值始终为nil。如何获得用户选择的实时照片?

1 个答案:

答案 0 :(得分:0)

我认为这种行为上的改变是一个错误。但是,如果您有权访问用户的照片库,则可以使用.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()
            }
        }