繁体   English   中英

带有UIScrollView的UIView屏幕截图

[英]Screenshot of UIView with UIScrollView inside

我有一个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也不会缩放。 我不知道我解释得是否正确

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

供您参考的文档:

宣言

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

参量

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

尝试这个。 它返回一个UIView

let screenShot = self.viewCapturedFoto.snapshotViewAfterScreenUpdates(true)

有关更多信息,请访问Apple Docs的这一部分

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM