首页 > 解决方案 > 更改图像视图后 UIImage 未更新

问题描述

当我想编辑我的 UIImageView(添加边框、背景颜色等)并从中获取最终图像时,我遇到了一个非常简单但非常奇怪的问题。它给了我初始化的原始图像,没有改变。

我基本上使用这个库中的SOXPanRotateZoomImageView.swift,它将手势应用于我的图像以进行旋转、缩放等。

下面是我的代码:

class ImageEditorViewController: UIViewController {

  public init(rawImage: UIImage?) {
    self.image = rawImage
    
    super.init(nibName: String(describing: type(of: self)), bundle: Bundle(for: type(of: self)))
  }

  override func viewDidLoad() {
    super.viewDidLoad()

    let editedImageView = SOXPanRotateZoomImageView(image: self.image)
    self.panView.addSubview(editedImageView)
    editedImageView.backgroundColor = .red
    editedImageView.layer.cornerRadius = 20

    let pickedImage = editedImageView.image // Here is original image, without altering..
  }
}

editedImageView 中我可以看到更改,但是当我想访问它的图像时,它是原始图像。一些以前提出setNeedsDisplay()的问题建议我申请了editedImageView.setNeedsDisplay();它没有帮助。如果我需要提供更多信息或更清楚,请告诉我。我感谢您的帮助。

标签: iosswiftuiimageviewuiimageuigesturerecognizer

解决方案


请注意,SOXPanRotateZoomImageView.swift执行旋转、平移和捏合而UIImageView不是UIImage. 换句话说,它改变了 ui 容器,而不是图像实例。

因此,当您尝试获取图像时,就像let pickedImage = editedImageView.image您收到原始图像一样。

如果要执行和保存对图像的更改,则必须寻找其他库或自己编写。


推荐阅读