问题描述
当我想编辑 UIImageView(添加边框、背景颜色等)并从中获取最终图像时,遇到了一个非常简单但又非常奇怪的问题。它给了我初始化的原始图像,没有改变。
我基本上使用 SOXPanRotateZoomImageView.swift 库中的 this 将手势应用于我的图像以进行旋转、缩放等。
下面是我的代码:
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()
;它没有帮助。如果我需要提供更多信息或更清楚,请告诉我。感谢您的帮助。
解决方法
请注意,SOXPanRotateZoomImageView.swift 执行旋转、平移和捏合 UIImageView
而不是 UIImage
。
换句话说,它改变了 ui 容器,而不是图像实例。
因此,当您尝试获得像 let pickedImage = editedImageView.image
这样的图像时,您会收到原始图像。
如果要对图像执行和保存更改,则必须寻找其他库或自己编写。