【问题标题】:Image to Initially Fill UIImagePickerController初始填充 UIImagePickerController 的图像
【发布时间】:2015-07-11 09:45:29
【问题描述】:

在我的 iOS 应用中,我想从照片库中抓取图像并将它们裁剪为方形格式。 UIImagePickerController 很好地处理了这个问题,但有一个小问题:当我从库中选择一张横向照片时,它不会填满裁剪区域(对于纵向图像它会填满)。这允许用户选择一个非正方形区域。 有没有办法像水平一样强制图像选择器垂直填充裁剪区域 - 无需实现我自己的图像选择器?

我的代码:

class AddProfileViewController: UIViewController, UIGestureRecognizerDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

    @IBOutlet weak var profileImageView: EnhancedImageView!
    let imagePicker = UIImagePickerController()

    override func viewDidLoad() {
        super.viewDidLoad()

        // ...

        imagePicker.delegate = self
    }

    func profileImageTapped() {
        imagePicker.allowsEditing = true
        imagePicker.sourceType = .PhotoLibrary
        presentViewController(imagePicker, animated: true, completion: nil)
    }

    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
        // ...
    }

    func imagePickerControllerDidCancel(picker: UIImagePickerController) {
        dismissViewControllerAnimated(true, completion: nil)
    }
}

选择一张风景图片,如下所示:

相反,我希望图像水平和垂直延伸到裁剪框,因此图像选择器将始终返回方形图像。

【问题讨论】:

  • 目前没有答案 - 如果不编写自己的图像选择器,可能无法做到这一点。这是我现在解决(或避免)它的方法 - 与其说是解决方案,不如说是一种解决方法:如果用户没有放大图像的任何部分,则图像的中心是用户想要的最佳近似值,并且我通过在两边切掉等宽的切片来得到方形图像。

标签: ios swift uiimagepickercontroller


【解决方案1】:

结束这个问题 - 这是我解决它的方法:

使用标准图像选择器似乎无法将图像垂直扩展到边界。选项是创建您自己的图像选择器或使用以下解决方法,这在大多数情况下可能就足够了:

如果用户不放大图像的任何部分,则图像的中心是用户想要的最佳近似值,您可以通过在两侧切掉等宽的切片来获得方形图像。

【讨论】:

    【解决方案2】:

    我在情节提要中指定了图像视图的高度和宽度 (90x90),并在情节提要中选择了 Aspect Fill 和 Clip to Bounds。如果用户不放大,图像会从中心裁剪到 90x90。

    【讨论】:

      猜你喜欢
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      • 2019-10-24
      • 2011-07-27
      • 1970-01-01
      • 2017-07-11
      • 1970-01-01
      • 2013-02-28
      相关资源
      最近更新 更多