2017-10-04 95 views
0

我有屏幕等于SceneView IM的大小寻求捕捉无法采取截图 - 屏幕大小并返回图像的问题

let screen = CGRect(x: 0, y: 0, width: sceneView.frame.size.width, height: sceneView.frame.size.height - 60) 


至于尺寸,我招呼着“无法调用初始化为与类型的参数列表(的CGRect)。我想如何去修复这个错误类型CGFloat的?

func Screenshot() 
{ 
     UIGraphicsBeginImageContextWithOptions(UIScreen.main.bounds.size, false, CGFloat(screen)) 
     view.layer.render(in: UIGraphicsGetCurrentContext()!) 
     let image = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 
     UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil) 
} 
+0

为了创建自定义边界,请使用CGSize。 – jonpeter

回答

1

您已经通过错误的参数类型的参数UIGraphicsBeginImageContextWithOptions。最后一个参数的类型为CGFloat的,即接受浮点值,但您已经传递了类型CGRect(屏幕)的值。

UIGraphicsBeginImageContextWithOptions具有以下参数的参数

void UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale) 


参数

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

opaque
指示位图是否不透明的布尔标志。如果您知道位图完全不透明,请指定YES忽略Alpha通道并优化位图的存储。指定NO意味着位图必须包含一个Alpha通道来处理任何部分透明的像素。

比例尺
适用于位图的比例因子。如果您指定的值为0.0,则缩放系数将设置为设备主屏幕的缩放系数。

这里苹果的文档此功能:UIGraphicsBeginImageContextWithOptions

解决方案(提示):通过值0.0或1.0,而不是屏幕看。

UIGraphicsBeginImageContextWithOptions(UIScreen.main.bounds.size, false, CGFloat(1.0)) 
+0

再次感谢你,Krunal。对于那些希望自己定制边界的人来说,使用CGSize就像这样 - 让screen = CGSize(width:UIScreen.main.bounds.width,height:UIScreen.main.bounds.height - 60) – jonpeter