我有一个视图(蓝色背景......),我在这里称之为"main",在主要的我添加了 UIImageView
然后我旋转,平移和缩放 . 在主要我有一个显示裁剪区域的另一个子视图 . 在较暗的区域下的任何东西都需要被裁剪 .
我试图弄清楚如何从这种状态正确创建一个裁剪图像 . 我希望生成的图像看起来像这样:
我想确保保持图像的分辨率 .
任何的想法?
我试图弄清楚如何使用UIImageView的layer.mask属性 . 经过一些反馈后,我想我可以在蓝色视图上有另一个视图(B),在B上我会添加图像视图,这样我就可以确保B的帧与裁剪蒙版叠加的矩形相匹配 . 我认为这可行吗?唯一的问题是我想确保我不会失去决心 .
所以,早些时候我试过这个:
maskShape.frame = imageView.bounds
maskShape.path = UIBezierPath(rect: CGRect(x: 20, y: 20, width: 200, height: 200)).cgPath
imageView.layer.mask = maskShape
rect只是一个测试矩形,图像将裁剪到该路径,但是,我不知道如何从所有这些中获得UIImage,这可以保持原始图像的大分辨率
所以,我已经实现了marco建议的方法,除了保持分辨率外,它都有效 .
我使用此调用来截取包含图像的视图的截图,并将其剪切到边界:
public func renderToImage(afterScreenUpdates: Bool = false) -> UIImage {
let rendererFormat = UIGraphicsImageRendererFormat.default()
rendererFormat.opaque = isOpaque
let renderer = UIGraphicsImageRenderer(size: bounds.size, format: rendererFormat)
let snapshotImage = renderer.image { _ in
drawHierarchy(in: bounds, afterScreenUpdates: afterScreenUpdates)
}
return snapshotImage
}
我得到的图像是正确的,但不像我裁剪的那样锐利 .
锄头可以保持分辨率高吗?
1 回答
在保留图像的视图中,必须将
clipsToBounds
设置为true
. 不确定我是否康复,但我想这是你的"cropping area"