swift - 屏幕快照显示设备上的工具栏,但不显示模拟器上的工具栏

标签 swift webkit

我有一个在 webkit 之上的 viewDidLoad 上实例化的工具栏。当我在模拟器上拍摄快照时,工具栏丢失了,这正是我想要的。当在设备上构建时,工具栏就在那里。

我尝试用以下方法隐藏工具栏:

toolbar.isHidden = true

但是应用程序崩溃,工具栏为零。如果我将其更改为:

toolbar?.isHidden = true

考虑到它仍然认为它为零,它仍然出现。

通过调用另一个函数在 viewDidLoad 上设置工具栏:

var toolbar : UIToolbar!

override func viewDidLoad() {
        super.viewDidLoad()
        setUpToolBar()
}

func setUpToolBar() {
        let saveButton = UIBarButtonItem(barButtonSystemItem: .save, target: self, action: #selector(takeScreenshot))
... 
        let toolbar = UIToolbar(frame: CGRect(x: 0, y: 300, width: 200, height: 50)) 
        toolbar.setItems([saveButton,flexibleSpaceFillerLeft,userAgentButton,flexibleSpaceFillerRight,doneButton], animated: true)

        view.addSubview(toolbar)
}

我的快照的代码如下。这是我在拍摄快照之前尝试隐藏工具栏的地方。

   @objc func takeScreenshot() {

        webView.takeSnapshot(with: nil, completionHandler: { (image,error) in
            if let image = image {
                self.screenshotOfWindow = image
                self.showScreenshotEffect()
                self.saveAllData()
            } else {
                print (error?.localizedDescription as Any)
            }
        })
    }

这是我需要截取屏幕截图的屏幕:

screenshot

屏幕截图中的红色框是我需要从屏幕截图中消失的栏。

我希望能够在不看到底部栏的情况下截取屏幕截图。如前所述,这在模拟器中有效,但设备始终显示该栏。屏幕截图的顶部还有一个“导航 Controller ”间隙,因为顶部栏覆盖了顶部屏幕的一部分,但这只是空白,我稍后可以解决。

最佳答案

我只是想回来回答我是如何解决这个问题的。 webview 嵌入在导航 Controller 中,但我通过调用我在项目早期创建的 setupToolBar 函数,以编程方式在 viewDidLoad 上创建工具栏。我可以隐藏工具栏,但在截屏时仍然会捕获它。我注释掉了所有代码并使用导航 Controller 的工具栏。现在,当我截取屏幕截图时,导航 Controller 的底部和顶部栏不是屏幕截图的一部分。

关于swift - 屏幕快照显示设备上的工具栏,但不显示模拟器上的工具栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56492919/

相关文章:

css - 如何让我的 css webkit 动画停止变化

arrays - 如何在正确的位置将元素插入 Swift 中的排序数组?

ios - 使用 UserNotifications didReceive 响应呈现 ViewController

ios - bringSubviewToFront 不适用于下拉 View (UIView)

javascript - 如何使背景图像在页面打开/刷新时慢慢模糊?

css - Safari css 宽度转换不适用于不同的单位测量值

ios - 添加到数组时无法推断通用参数 'Element'

ios - 我不断收到 Thread 1 : Signal SIGABRT; Is there a way to view all IBOutlets in a project?

c++ - Qt编程: serial port communication module/plugin

css - 如何使用 CSS3 自定义边框形状