如何裁剪 UIScrollView 中显示的 UIImageView 部分并将其保存到 UIImage 变量?
Posted
技术标签:
【中文标题】如何裁剪 UIScrollView 中显示的 UIImageView 部分并将其保存到 UIImage 变量?【英文标题】:How to crop and save the portion of UIImageView that is shown within a UIScrollView to a UIImage variable? 【发布时间】:2017-07-11 23:52:56 【问题描述】:在显示的图像中,正方形显示UIScrollView
,后者显示UIImageView
。在这种情况下,用户可以通过平移和捏合来放大或缩小图像。
当用户完成平移和捏合到所需的正方形时,如何裁剪并将仅显示在UIScrollView
内的结果内容保存到UIImage
中并保存?忽略其余图片内容
在将UIImageView
加载到UIScrollView
时,如何限制纵向图像以使图像的宽度与滚动视图的宽度相匹配?或者在图像高度与滚动视图高度匹配但永远无法在UIScrollView
中显示任何空格的横向模式下?
我对第二部分问题的尝试如下:
实现了UIScrollViewDelegate
委托
self.scrollViewForImage.delegate = self
self.scrollViewForImage.addSubview(self.imgSelected)
self.scrollViewForImage.maximumZoomScale = 2.0
func viewForZooming(in scrollView: UIScrollView) -> UIView?
return self.imgSelected
【问题讨论】:
***.com/a/66396409/2033377 我在这里回答了这个问题。但这有一个圆形作物而不是方形作物。 【参考方案1】:这是未经测试的,但通过从完整的 UIView
创建图像进行了重构,这确实可以完美运行。
我想既然你知道你的UIScrollView
的内容矩形,我基本上添加了传递整个视图。如果它需要调整 CGRect
值,请告诉我,我会更新它。
func createImage(_ rect: CGRect, fromView:UIView) -> UIImage
UIGraphicsBeginImageContextWithOptions(CGSize(width: rect.width, height: rect.height), true, 1)
fromView.layer.render(in: UIGraphicsGetCurrentContext()!)
image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
【讨论】:
以上是关于如何裁剪 UIScrollView 中显示的 UIImageView 部分并将其保存到 UIImage 变量?的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollView 被裁剪并且不使用 Autolayout 滚动
如何使用主 iPhone 视图之外的 UI 元素在 Interface Builder 中设置 UIScrollView?