屏幕快照显示了设备上的工具栏,而不是模拟器上的工具栏

时间:2019-06-07 10:52:12

标签: 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

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

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

1 个答案:

答案 0 :(得分:0)

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