ios - 更改图像视图后 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()
;它没有帮助。如果我需要提供更多信息或更清楚,请告诉我。我感谢您的帮助。
解决方案
请注意,SOXPanRotateZoomImageView.swift执行旋转、平移和捏合而UIImageView
不是UIImage
. 换句话说,它改变了 ui 容器,而不是图像实例。
因此,当您尝试获取图像时,就像let pickedImage = editedImageView.image
您收到原始图像一样。
如果要执行和保存对图像的更改,则必须寻找其他库或自己编写。
推荐阅读
- reactjs - 如何在 react-data-grid 中禁用默认标题
- azure-devops - VSTS:如何查询在过去“x”天内未更改的工作项
- python - flask - 获取请求引荐端点
- javascript - 如何使用 toThrow 和 Jest 断言异步方法抛出错误
- twitter-bootstrap - Bootstrap 4列排序
- xamarin.forms - 嵌入式资源和 Proguard 的 Xamarin.Forms 问题
- android - 如何在 Android 9(pie) 中找到用户的默认生物特征偏好
- sql - T-SQL - 复制和转置数据
- java - 谁能告诉我这些字符串中使用的字符编码类型?[反编译]
- ruby - 为什么 File 类的 read 方法会在尝试以具有适当权限的 root 用户身份读取 /dev/mem 时引发 Errno::EPERM?