UIImagePickerController 裁剪图像高于用户选择

Posted

技术标签:

【中文标题】UIImagePickerController 裁剪图像高于用户选择【英文标题】:UIImagePickerController crops images higher than user chooses 【发布时间】:2018-01-05 19:18:37 【问题描述】:

编辑:这是作为 UIImagePicker allowsEditing stuck in center 的完全相同的副本关闭的,但这似乎是完全不同的问题。这个问题与用户无法移动裁剪框有关(额外的怪异只发生在相机上)。这个问题是关于图像选择器将错误的值返回到我的代码中。

我的UIImagePickerController 上有allowsEditing = true,因此可以裁剪图像:

info[UIImagePickerControllerEditedImage] 中出现的图像通常看起来正确并被裁剪,但裁剪窗口好像向上滑动了约 10%:

您可以在上面看到裁剪窗口穿过叶子的中脉,但在选择器的输出中,中脉是完全可见的。

有熟悉这种行为的人吗?

【问题讨论】:

@Fogmeister :我看到您将此标记为与 ***.com/questions/12630155/… 完全相同,但这似乎是一个完全不同的问题。我错过了连接吗?还是说这也是 ios 的 bug 造成的? 【参考方案1】:

是的,我遇到了同样的问题,现在有了解决方案,你为什么它的图像从图像中取-10%?因为我们的状态栏显示在我们的项目中,它会包含它的高度,你需要通过下面的方法隐藏它,你会得到准确的结果。

func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) 
    UIApplication.shared.isStatusBarHidden = true

【讨论】:

【参考方案2】:

正如 Nirav Bhavsar 所说,状态栏搞砸了。

他的解决方案对我不起作用,但添加以下扩展名可以使 UIImagePickerControllerEditedImage 正确裁剪图像。

extension UIImagePickerController 
    open override var childViewControllerForStatusBarHidden: UIViewController? 
        return nil
    

    open override var prefersStatusBarHidden: Bool 
        return true
    

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

我从Swift 3.0 - how to hide status bar after calling UIImagePickerController?得到它

【讨论】:

以上是关于UIImagePickerController 裁剪图像高于用户选择的主要内容,如果未能解决你的问题,请参考以下文章

UIImagePickerController、自定义 UIButton 和 AutoLayout

UIImagePickerController 实况照片

OCMock 模拟 UIImagePickerController

UIImagePickerController 图像没有改变

无法弹出 UIImagePickerController

为啥 UIImagePickerController 不能推入导航栈?