UIView与UIScrollView里面的截图

时间:2016-08-18 12:44:10

标签: ios swift uiview uiscrollview uiimage

我有一个UIView里面包含一个UIScrollView,实际上它包含一个UIImageScrollView,一个可以帮我缩放UIImage的类,我想用缩放的UIImage拍摄UIView的截图,我找到了这个函数:

 func captureCrop() -> UIImage {
    UIGraphicsBeginImageContextWithOptions(self.viewCapturedFoto.frame.size, true, 0.0)
    self.viewCapturedFoto.layer.renderInContext(UIGraphicsGetCurrentContext()!)
    let image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return image;
}

但是当屏幕截图完成时,新的UIImage显示没有缩放图像,我的意思是即使我放大了它,UIImage仍然没有缩放。 我不知道我是否已经解释得足够

2 个答案:

答案 0 :(得分:0)

我相信你的问题是你传递给你的UIGraphicsBeginImageContextWithOptions函数的size参数。现在你正在传递整个框架的大小,在滚动视图中,它也包括屏幕外部分。您可以尝试将size参数更改为设备屏幕的边界,或者最坏的情况是,将UIImageScrollView放在另一个视图中,并使用此容器视图的边界来设置图像大小。

文档供您参考:

<强>声明

func UIGraphicsBeginImageContextWithOptions(_ size:CGSize,_ opaque:Bool,_ scale:CGFloat)

<强>参数

尺寸: 新位图上下文的大小(以点为单位)。这表示UIGraphicsGetImageFromCurrentImageContext函数返回的图像的大小。要获取位图的大小(以像素为单位),必须将width和height值乘以scale参数中的值。

答案 1 :(得分:0)

试试这个。它返回一个UIView tho

let screenShot = self.viewCapturedFoto.snapshotViewAfterScreenUpdates(true)

有关详细信息,请访问Apple Docs

的此部分