iOS11 UIImagePickerControllerEditedImage 异常问题

升级到iOS11后,使用UIImagePickerController拍照或选择相册图片,并设置

let vc = UIImagePickerController()
vc.allowsEditing = true

进行编辑图片时,发现图片无论怎么拖,都无法对准到编辑框,甚至选出来的图片

let image = info[UIImagePickerControllerEditedImage] as? UIImage

会带有黑边,莫名被剪掉了一些内容...

解决办法是让其导航栏透明:

extension ViewController: UINavigationControllerDelegate {
    func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
        // iOS11需要让导航栏透明,否则图片对不准选择框,选出的图片也会有黑边
        if navigationController is UIImagePickerController {
            navigationController.navigationBar.isTranslucent = true
        }
    }
}

当App的导航栏被默认设置了全局背景图时,就会失去透明,比如

let bar = UINavigationBar.appearance()
bar.setBackgroundImage(image, for: .default)

这种情况下,调起UIImagePickerController时,它的导航栏就是不透明的,需要处理一下。

你可能感兴趣的:(iOS11 UIImagePickerControllerEditedImage 异常问题)