我有一个在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)
}
})
}
这是我需要截屏的屏幕:
屏幕截图中的红色框是我需要从屏幕截图中消失的栏。
我希望能够在不显示底部栏的情况下截取屏幕截图。如前所述,这在模拟器中有效,但是设备始终显示条形图。屏幕截图顶部还有一个“导航控制器”间隙,因为顶部栏覆盖了顶部的部分屏幕,但这只是空白,以后我可以解决。
答案 0 :(得分:0)
我只是想回来回答我如何解决这个问题。 Webview嵌入在导航控制器中,但是我通过调用在项目早期创建的setupToolBar函数在viewDidLoad上以编程方式创建工具栏。我可以隐藏工具栏,但在截屏时仍被捕获。我注释掉了所有这些代码,并改用了导航控制器的工具栏。现在,当我截取屏幕截图时,导航控制器的底部和顶部栏不属于屏幕截图。