Objective-C:捕获自定义框架内所有视图的屏幕截图

2023-12-06

我有一个游戏,用户可以创建自定义级别并将它们上传到我的服务器以供其他用户玩,我想在用户测试他/她的级别以上传到我的服务器之前获取“操作区域”的屏幕截图“预览图像”。

我知道如何获取整个视图的屏幕截图,但我想将其定义为自定义框架。考虑下图:

Action Area

我只想截取红色区域(“操作区域”)的屏幕截图。我能实现这个目标吗?


只需要创建一个要捕获的区域的矩形并将该矩形传递到方法中即可。

斯威夫特 3.x:

extension UIView {
  func imageSnapshot() -> UIImage {
    return self.imageSnapshotCroppedToFrame(frame: nil)
  }

  func imageSnapshotCroppedToFrame(frame: CGRect?) -> UIImage {
    let scaleFactor = UIScreen.main.scale
    UIGraphicsBeginImageContextWithOptions(bounds.size, false, scaleFactor)
    self.drawHierarchy(in: bounds, afterScreenUpdates: true)
    var image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()

    if let frame = frame {
        let scaledRect = frame.applying(CGAffineTransform(scaleX: scaleFactor, y: scaleFactor))

        if let imageRef = image.cgImage!.cropping(to: scaledRect) {
            image = UIImage(cgImage: imageRef)
        }
    }
    return image
  }
}

//How to call :
imgview.image = self.view.imageSnapshotCroppedToFrame(frame: CGRect.init(x: 0, y: 0, width: 320, height: 100))

目标C:

-(UIImage *)captureScreenInRect:(CGRect)captureFrame 
{
    CALayer *layer;
    layer = self.view.layer;
    UIGraphicsBeginImageContext(self.view.bounds.size); 
    CGContextClipToRect (UIGraphicsGetCurrentContext(),captureFrame);
    [layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return screenImage;
}

//How to call :
imgView.image = [self captureScreenInRect:CGRectMake(0, 0, 320, 100)];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Objective-C:捕获自定义框架内所有视图的屏幕截图 的相关文章

随机推荐

  • 在R中绘制线段

    我有一些 x 和 y 坐标 我试图将它们绘制成线段 我从我认为应该有效的行为中得到了一些意想不到的行为 对于每个线段 都有一组起始坐标 x1 y1 和一组结束坐标 x2 y2 这是一个数据框 称为 df 如下所示 x1 y1 x2 y2 3
  • D3 csv 返回行

    这是来自d3csv API 文档 d3 csv path to file csv row function d return key d key value d value get function error rows console l
  • uwp:如何根据列表视图项的值更改其背景颜色?

    编辑 UWP 应用程序与 WPF 应用程序并非 100 相同 我有一个带有 ListView 的 uwp 应用程序 在 ListView 中 我使用带有测试类的 DataTemplate 它显示测试的名称和点 我想要完成的是一个触发器 检查
  • 如何使用 build.xml 在 java 代码中设置属性

    我是 Ant 的新手 任何帮助将不胜感激 我想做的是 当我调用 Ant 目标时 我正在执行以下操作 ant DSIMV3 1 true run tenantManagement 现在在 build xml 中 我有
  • Firestore查询仅包含集合的文档

    我有一个 firestore 集合 里面有一些文档 这些文档仅包含集合 不包含任何字段 因此 当我尝试获取根集合中的所有文档时 我得到的快照大小为零 有没有办法获取没有字段但里面有一些集合的文档 我的 Firestore 结构是 您还可以看
  • 如何从寄存器中提取值?

    我试图弄清楚如何从 ASM 指令中提取寄存器值并将其放入 C 中的变量中 例如 MOV DWORD PTR DS ESI EDI 假设EDI保存的值是一个int int Value EDI 取决于你的编译器 搜索 内联汇编 和您使用的编译器
  • 如何从 Windows Phone 上的前台应用程序发出 ScheduledTask 信号?

    我正在创建一个具有前台应用程序 当然 以及周期性任务和资源密集任务的应用程序 如果用户在运行时启动应用程序本身 我需要一种方法来关闭计划任务 我没有看到任何方法可以使用系统范围的互斥体来做到这一点 理想情况下 当后台任务启动时 将分离一个线
  • 在 for 循环内等待承诺

    let currentProduct for let i 0 i lt products length i currentProduct products i subscription getAll products i id then s
  • PHP 对象类变量

    我在 PHP 中构建了一个类 并且必须将类变量声明为对象 每次我想声明一个空对象时 我都会使用 var new stdClass 但是如果我用它来声明一个类变量为 class foo var bar new stdClass 发生解析错误
  • Node 和 Chrome (V8) 中块作用域内的 const

    我正在编写一个nodejs v4 2 4 应用程序 我遇到了一些奇怪的行为 function A number this number number for var i 0 i lt 3 i const a new A i console
  • Maven 尝试部署到本地主机而不是远程服务器

    这是我的pom xml构建配置
  • React Router Dom v6 - 活动导航上的悬停样式

    我有一个具有悬停状态和活动导航样式的导航栏 我正在尝试让我的活动导航链接也具有自定义悬停状态 现在 活动样式正在覆盖悬停状态 如何在活动导航链接上保持悬停状态样式 发生了什么 active nav styles looks good whe
  • 在powershell中重命名文件

    我想请求帮助重命名给定文件夹中的文件 我想将字符 vol 更改为 vol 感谢帮助 gci c folder path name match vol rename item newname name replace vol vol what
  • 如何使用 python 进行 tar 备份

    我有目录 home user1 user2 我想循环遍历所有用户名主目录 然后制作 tar gz 文件 然后将其存储在 backups 目录中 我是 python 新手 很困惑如何开始 这应该有效 import os import tarf
  • Tomcat:通过 JNDI 使用 FTP 连接 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我需要从在 Tomcat 6 上运行的 Web 应用程序访问 FTP 服务器 我想使用 JNDI 来执行此操作 如何使用 JNDI 在 Tomcat 中配置此 FTP 连接 我必须写
  • R中响应面的scatterplot3d

    我想通过 scatterplot3d 绘制响应面图 但以下代码出现错误 library rsm swiss2 lm lt lm Fertility poly Agriculture Education degree 2 data swiss
  • 让文本显示在子图图像前面

    Ive got a lot of images of galaxies through different filters each line of subplots represents a new object with a uniqu
  • JQuery keyup 在 IE 10 上不起作用

    此代码在 Chrome 和 Firefox 上完美运行 它只会在 IE 10 上出现问题 我使用的是 JQuery 1 11 1 在控制台中 如果您使用两个按键 则似乎不会触发按键操作 因此 如果我按住 alt a 当我释放它们时 它只会触
  • 无需连接设备即可扫描设备的 Ble Scan 服务

    我想用 BLE 扫描一些设备 我只想展示我的设备 因此我会获取设备的名称 如果它是好的 我会将其放入我的列表中 if device getName contains DEVICE NAME mDevices put device hashC
  • Objective-C:捕获自定义框架内所有视图的屏幕截图

    我有一个游戏 用户可以创建自定义级别并将它们上传到我的服务器以供其他用户玩 我想在用户测试他 她的级别以上传到我的服务器之前获取 操作区域 的屏幕截图 预览图像 我知道如何获取整个视图的屏幕截图 但我想将其定义为自定义框架 考虑下图 我只想