【问题标题】:How to crop and save the portion of UIImageView that is shown within a UIScrollView to a UIImage variable?如何裁剪 UIScrollView 中显示的 UIImageView 部分并将其保存到 UIImage 变量?
【发布时间】:2017-07-11 23:52:56
【问题描述】:

在显示的图像中,正方形显示UIScrollView,后者显示UIImageView。在这种情况下,用户可以通过平移和捏合来放大或缩小图像。

  1. 当用户完成平移和捏合到所需的正方形时,如何裁剪并将仅显示在UIScrollView 内的结果内容保存到UIImage 中并保存?忽略其余图片内容

  2. 在将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
}

【问题讨论】:

标签: ios swift uiscrollview uiimageview uiimage


【解决方案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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 2012-07-03
    • 2017-06-13
    • 2019-08-08
    • 2013-10-11
    相关资源
    最近更新 更多