截图只是屏幕的一部分 – 斯威夫特
我正在使用这个Swift代码截取我的应用程序的屏幕截图:
UIGraphicsBeginImageContextWithOptions(UIScreen.mainScreen().bounds.size, false, 0); self.view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true) var image:UIImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();
我如何才能截取屏幕的一部分,而不是所有的,就像我在这里做的?
例如,如果要在高度为(100,150)
位置(50,50)
处拍摄UIView
矩形的屏幕截图。
首先将图像上下文设置为矩形的大小。 这设置图像大小。
UIGraphicsBeginImageContextWithOptions(CGSizeMake(100,150), false, 0);
现在在这个上下文中绘制视图, 截图的可见部分从(50,50)
开始,
self.view.drawViewHierarchyInRect(CGRectMake(-50,-50,view.bounds.size.width,view.bounds.size.height) afterScreenUpdates: true)
由于我们设置了context
的大小,因此剪辑屏幕截图为(100,150)
。 现在从这个UIImage。
var image:UIImage = UIGraphicsGetImageFromCurrentImageContext();
要快照包含UIVisualEffect(Blur / Vibrancy)的视图,请参阅我的解决scheme: https ://stackoverflow.com/a/33633386/802196
我觉得这是最好的答案拍一部分的屏幕:
func screenShot() { UIGraphicsBeginImageContextWithOptions(CGSizeMake(self.frame.size.width*0.99,self.frame.size.height*0.70), false, 0) var image:UIImage = UIGraphicsGetImageFromCurrentImageContext(); self.view?.drawViewHierarchyInRect(CGRectMake(-01, -01, self.frame.size.width, self.frame.size.height), afterScreenUpdates: true) var screenShot = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() }