UIImagePickerController无法正确裁剪所选图像

Dav*_*vid 5 uiimagepickercontroller swift4

我有一个简单的标准图像选择器,除了可以在使用编辑器功能时将图像移到方形裁剪框上方之外,其他都可以正常工作。当我选择图像或调整图像大小然后接受图像时,裁切后的图像在裁切框上方约有20像素左右的图像,并且从底部砍下了约40像素。下面是代码。因为一张图片值一千个单词,所以我提供了两个屏幕快照,以显示在编辑模式下的外观以及返回的内容。我将不胜感激任何明智的建议代码或设置建议,这些建议可以使编辑者准确地裁剪图片。

import UIKit
Run Code Online (Sandbox Code Playgroud)

class ImagePickerVC:UIViewController {

@IBOutlet weak var myImage: UIImageView!
@IBOutlet weak var btnPickImage: UIButton!
@IBOutlet weak var btnCancel: UIBarButtonItem!
@IBOutlet weak var btnSave: UIBarButtonItem!

var imagePicker = UIImagePickerController()

override func viewDidLoad() {
    super.viewDidLoad()

    setupNavBarAppearance(control: self)

    imagePicker.delegate = self

    myImage.image = myUserProfile.avatar
}
@IBAction func btnCancel(_ sender: Any) {
    dismiss(animated: false, completion: nil)
}

@IBAction func btnPickImage(_ sender: Any) {
    imagePicker.sourceType = .photoLibrary
    imagePicker.allowsEditing = true
    present(imagePicker, animated: false, completion: nil)
}
@IBAction func btnSave(_ sender: Any) {
    myUserProfile.avatar = myImage.image!
    dismiss(animated: false, completion: nil)
}
}

extension ImagePickerVC: UIImagePickerControllerDelegate,       UINavigationControllerDelegate {
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let image = info[UIImagePickerControllerEditedImage] as? UIImage {
        myImage.image = image
    }
    dismiss(animated: false, completion: nil)
}
}
Run Code Online (Sandbox Code Playgroud)

图像选择器编辑器模式

图片返回

sie*_*fix 3

状态栏把它弄乱了。

添加以下扩展可以UIImagePickerControllerEditedImage正确裁剪图像。

extension UIImagePickerController {
    open override var childViewControllerForStatusBarHidden: UIViewController? {
        return nil
    }

    open override var prefersStatusBarHidden: Bool {
        return true
    }
}
Run Code Online (Sandbox Code Playgroud)

这个扩展隐藏了状态栏,UIImagePickerController看起来有点奇怪,但结果才是最重要的。

我从Swift 3.0 得到它 - 如何在调用 UIImagePickerController 后隐藏状态栏?