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

Posted

技术标签:

【中文标题】UIImagePickerController 在 iOS 13 中不返回实时照片【英文标题】:UIImagePickerController doesn't return a live photo in iOS 13 【发布时间】:2019-10-12 14:56:34 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于UIImagePickerController 在 iOS 13 中不返回实时照片的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 7 中呈现 UIImagePickerController 的问题

如何在 iPad 上关闭 UIImagePickerController

仅在横向 UIImagePickerController 中显示CameraControls

UIImagePickerController 在 iOS 11 上泄漏

UIImagePickerController 呈现在视图中

在 iOS 7 上显示 UIImagePickerController 会导致崩溃