我有一个在 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)
}
})
}
这是我需要截取屏幕截图的屏幕:
屏幕截图中的红色框是我需要从屏幕截图中消失的栏。
我希望能够在不看到底部栏的情况下截取屏幕截图。如前所述,这在模拟器中有效,但设备始终显示该栏。屏幕截图的顶部还有一个“导航 Controller ”间隙,因为顶部栏覆盖了顶部屏幕的一部分,但这只是空白,我稍后可以解决。
最佳答案
我只是想回来回答我是如何解决这个问题的。 webview 嵌入在导航 Controller 中,但我通过调用我在项目早期创建的 setupToolBar 函数,以编程方式在 viewDidLoad 上创建工具栏。我可以隐藏工具栏,但在截屏时仍然会捕获它。我注释掉了所有代码并使用导航 Controller 的工具栏。现在,当我截取屏幕截图时,导航 Controller 的底部和顶部栏不是屏幕截图的一部分。
关于swift - 屏幕快照显示设备上的工具栏,但不显示模拟器上的工具栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56492919/