我有一个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仍然没有缩放。 我不知道我是否已经解释得足够
答案 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
的此部分