ios - 无法截取屏幕截图 - 屏幕尺寸和返回图像问题

标签 ios swift core-graphics screenshot arkit

我的屏幕大小等于我要捕获的 SceneView

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)
}

最佳答案

您向 UIGraphicsBeginImageContextWithOptions 传递了错误的参数类型参数。最后一个参数是 CGFloat 类型,它接受浮点值,但您传递的是 CGRect(屏幕)类型的值。

UIGraphicsBeginImageContextWithOptions 具有以下参数参数

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


参数

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

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

规模
应用于位图的比例因子。如果指定值 0.0,比例因子将设置为设备主屏幕的比例因子。

Apple 的此功能文档:UIGraphicsBeginImageContextWithOptions

解决方案(提示):传递值 0.0 或 1.0 而不是屏幕并查看。

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

关于ios - 无法截取屏幕截图 - 屏幕尺寸和返回图像问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46570347/

相关文章:

ios - 向方法添加附加行为而无需子类化

iphone - 在后台接收 iOS 通知::本地通知

iphone - 为什么必须填充 UITextField 才能使 UIButton 作为 subview 消失

ios - 在 Swift 中将平移手势识别器添加到 UITableView

ios - editButtonItem 不起作用

ios - Swift 标签栏 View prepareforsegue

ios - 如何在UIView中绘制贝塞尔曲线

ios - 将用户名和密码保存在钥匙串(keychain)中并将其用作自动填充

iphone - 我可以从带有 alpha channel 的图像中获取 CGPath 吗?

ios - 启用颜色混合图层后,是否可以将带有非英文字符的 UILabel 设置为绿色?