未显示视图的屏幕截图

2024-03-28

我试图在显示 MyFirstViewController 时截取 MySecondViewController.view 的屏幕截图。我不希望 MySecondViewController 随时出现在屏幕上。 那可能吗?

这是我当前在 MyFirstViewController 函数中的代码:

func createPreview() {
    let mySecondViewController = self.storyboard!.instantiateViewController(withIdentifier: "MySecondViewController")
    self.navigationController?.pushViewController(mySecondViewController, animated: false)
    let snapshot = mySecondViewController.view.snapshot()
    self.navigationController?.popViewController(animated: false)
}

这是我正在使用的 UIView 扩展:

func snapshot() -> UIImage {
    UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.main.scale)
    drawHierarchy(in: self.bounds, afterScreenUpdates: true)
    let image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return image!
}

通过这段代码,snapshot变量包含一个具有良好尺寸的不可见图片。我认为它是在视图从导航控制器弹出后截取屏幕截图。

如果我尝试设置afterScreenUpdates值为 false,那么结果是一样的。然后,我认为它是在视图被推送到导航控制器之前截取屏幕截图。


我找到了我要找的东西。

这是新代码:

func createPreview() {
    let mySecondViewController = self.storyboard!.instantiateViewController(withIdentifier: "MySecondViewController")
    let snapshot = mySecondViewController.view.snapshot()
}

extension UIView {
    func snapshot() -> UIImage {
        UIGraphicsBeginImageContextWithOptions(bounds.size, self.isOpaque, UIScreen.main.scale)
        layer.render(in: UIGraphicsGetCurrentContext()!)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image!
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

未显示视图的屏幕截图 的相关文章

随机推荐

  • Twig:打印变量名称为 String 的变量的值

    我有一个名为例如的变量var1哪个有价值value1作为字符串 如何打印变量的值var1 where var1是作为字符串获得的吗 Let set container var1 变量的值container是动态的 取决于值container
  • 如何从 youtube api 数据 v3 获取 youtube Shorts

    我想要一种从 YouTube API 获取特定频道的 YouTube 短片的方法 我到处找遍了 但什么也没找到 目前我可以使用此端点获取所有频道视频的播放列表ID request youtube channels list part con
  • 如何回滚UPDATE语句?

    这可以在不恢复整个数据库的情况下实现吗 我已经进行了想要撤消的更改 但没有使数据库脱机 也没有进行完全恢复 不 SQL Server 没有 Ctrl Z 您可以通过将所有 DML 语句包装在事务中来保护自己免受这种情况的影响 所以你有这样的
  • 在 Windows 7 中安装/卸载服务:“错误 1001。指定的服务已标记为删除”

    我目前正在 NET 4 0 Visual Studio 2010 Windows 7 32 位中开发 Windows 服务 我有一个安装程序项目可以为我进行安装 当我安装该服务 卸载它并尝试再次安装时 出现以下错误 错误1001 指定的服务
  • Ionic/Angular - 多条路线不起作用

    我有一个使用选项卡模板的 Ionic 项目设置 这是我的问题 我有一个 活动 选项卡 页面上有 3 个按钮 Friends Near Me Global 当页面首次加载时 它将显示朋友的帖子列表 当我单击 我附近的 按钮时 它应该用我附近的
  • NetNamedPipeBinding 安全吗?

    我想知道 netNamedPipeBinding 是否被认为是安全的 一方面 NetNamedPipeBinding 仅在传输层上实现安全性 并且它使用 NTLM source http msdn microsoft com en us l
  • .NET 中的 .CSV 到 .MDB 转换

    我已使用 ado net 将 mdb 文件转换为 CSV 格式 然后循环记录集并将数据写入 csv 文件中 现在我需要做相反的事情 我必须将 CSV 文件转换为 mdb 文件 具体来说是访问表 有没有任何编程代码可以帮助我解决这个问题 由于
  • 以测试驱动方式开发的开源项目有哪些好的例子?

    I found 具有良好质量测试的开源项目 https stackoverflow com questions 2893841 open source projects with good quality tests但我想问一些不同的问题
  • AJAX 将多个数据发送到 ASP.Net MVC

    我在通过 ajax jquery 将多个对象发布到 MVC 4 控制器时遇到问题 已经过去几周了 但我似乎找不到解决方案 我尝试了几种方法 有时filterModel对象为空 有时字符串参数为空 即使我对是否指定contentType进行字
  • 尝试在 Android 上运行我的 React Native 应用程序时出错

    我已经构建了我的 React Native 应用程序 并使用我的 iOS 设备进行了几个月的测试和故障排除 现在我第一次尝试在 Android 上构建和测试该应用程序 问题是 我在尝试运行 Android 版本的应用程序时不断遇到错误 经过
  • 如何在 matplotlib 中根据 x、y、z 坐标绘制等高线图? (plt.contourf 或 plt.contour)

    These meshgrid对我来说使用起来有点混乱 我正在尝试用以下内容绘制散点图x and y坐标与覆盖在散点图上的等值线图 并具有连续分布z坐标 类似于高程图 如果我使用meshgrid使用 x y 和 z 坐标 然后我得到每个的 3
  • 如何确定 VB6 应用程序和使用 CreateObject() 实例化的 exe 之间的关联

    我们需要弄清楚服务如何查看正在运行的 VB6 应用程序和 或其 DCOM 生成的 exe 并找出哪个 VB6 应用程序与哪个 DCOM exe 配合使用 VB6 应用程序和生成的 exe 均位于同一服务器上 我们有一个 VB6 应用程序 它
  • UINavigationController 和 viewWillDisappear

    因此 我的应用程序中有一个 UINavController 并尝试在用户按下后退按钮时执行一个方法 我到处搜索 只能找到断章取义的零碎内容 有没有办法实现某种检查 当用户按下后退按钮以关闭当前视图时进行捕获 出于某种原因 弹出视图的 vie
  • try/catch/finally 在 groovy 编译器异常的情况下屏蔽 Jenkinsfile 问题

    我的 Jenkinsfile 中有类似于以下代码的代码 node checkout scm do some stuff try do some maven magic catch error stage Cleanup after fail
  • 用于接收 UDP 数据包的可变大小缓冲区

    我有一个 UDP 套接字 它将接收一些可能不同大小的数据包 并且我异步处理它 socket async receive from boost asio buffer buffer 65536 senderEndpoint handler 这
  • Espresso 测试调用视图按钮单击等待调用 api 响应数据进度对话框退出

    我使用 via espresso 库开发自动化测试 有时我 运行测试时曾经收到错误消息 无法启动意图 Intent 在 api 响应数据进度对话框退出后 我调用 view btn click 很长时间 请帮助我为那些有使用浓缩咖啡技术进行自
  • Angular http.get() url 作为原始 HTML

    我正在为作业创建一个网站 我想在其中动态加载一些数据 问题是 数据仅来自网站 没有 API 或任何东西 有什么方法可以使用 http get 来将整个网站作为原始 HTML 来提取 然后我可以解析它以获取信息吗 Thanks 您可以设置re
  • 在 AS7 中转换查找的 EJB 视图时出现 ClassCastException

    我正在将 2 个 EAR 部署到 JBoss AS 7 1 0 Alpha1 SNAPSHOT 7 0 1 Final 版本之后 两者都部署得很好 我有一个 EJB Singleton 类打包在一个 JAR 中 位于其中一个 EAR 中 S
  • PHP cURL 上传文件到 Node JS 服务器

    我有一个 PHP 前端项目和 Node JS API 我需要将文件发送到 API 但我必须使用 cURL 因为表单发送到 PHP 而 PHP 通过 cURL 发送到 Node JS 我尝试了很多不同的方法 但我无法让它发挥作用 在我正在使用
  • 未显示视图的屏幕截图

    我试图在显示 MyFirstViewController 时截取 MySecondViewController view 的屏幕截图 我不希望 MySecondViewController 随时出现在屏幕上 那可能吗 这是我当前在 MyFi