ios - 如何裁剪 UIScrollView 中显示的 UIImageView 部分并将其保存到 UIImage 变量?

标签 ios swift uiscrollview uiimageview uiimage

enter image description here

在所示图像中,方 block 显示了 UIScrollView,它显示 UIImageView。在这种情况下,用户可以通过平移和捏合来放大或缩小图像。

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

  2. UIImageView加载到UIScrollView中时,如何限制纵向图像,使图像的宽度与 ScrollView 的宽度匹配?或者在横向模式下,图像的高度与 ScrollView 的高度匹配,但永远无法在 UIScrollView 中显示任何空白?

我对问题第二部分的尝试如下: 实现了 UIScrollViewDelegate 委托(delegate)

self.scrollViewForImage.delegate = self
self.scrollViewForImage.addSubview(self.imgSelected)
self.scrollViewForImage.maximumZoomScale = 2.0

func viewForZooming(in scrollView: UIScrollView) -> UIView? {
    return self.imgSelected
}

最佳答案

这尚未经过测试,但通过从完整的 UIView 创建图像进行了重构,效果非常好。

我认为既然你知道 UIScrollView 的内容矩形,我基本上添加了传递整个 View 。如果它需要调整 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
}

关于ios - 如何裁剪 UIScrollView 中显示的 UIImageView 部分并将其保存到 UIImage 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45046204/

相关文章:

ios - UITapGestureRecognizer 取消 UITableViewController 中的 didSelectRowAtIndexPath

ios - Twitter 怎么知道 TWRequest 的来源?

ios - 在 Swift 中移动 UITableView 位置

ios - Swift/IOS 如何使用观察者进行更新

ios - 主视图从 ScrollView 中占用顶部空间?

ios - 在 Swift 中输入字段之前禁用按钮

iphone - 如何捕获 EXC_BAD_ACCESS (code=1, address=0x00XXXXXX)?

Swift 游戏音量/扬声器图标

ios - iOS 10 上的 ScrollView "bug",swift 4

ios - 如何在 UIScrollView 中实现缩放图像?