专家,
我正在使用以下代码在捕获屏幕视图之前隐藏工具和导航栏。然而,图像仍然显示两个条...我做错了什么?
func generateMeme() ->UIImage {
// Hide toolbar and navbar
self.navigationController?.navigationBarHidden = true
self.navigationController?.toolbarHidden = true
// Render view to an image
UIGraphicsBeginImageContext(self.view.frame.size)
self.view.drawViewHierarchyInRect(self.view.frame,afterScreenUpdates:true)
let memedImage : UIImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
// Show toolbar and navbar
self.navigationController?.navigationBarHidden = true
self.navigationController?.toolbarHidden = true
return memedImage
}
由于
答案 0 :(得分:1)
我能够通过使用参考插座然后使用隐藏属性来解决问题。以下是代码:
// Reference outlet for Tool Bar
@IBOutlet weak var toolBar: UIToolbar!
//Reference outlet for Navigation Bar
@IBOutlet weak var navBar: UINavigationBar!
//Generate meme
func generateMeme() ->UIImage {
// Hide toolbar and navbar
self.toolBar.hidden = true
self.navBar.hidden = true
// Render view to an image
UIGraphicsBeginImageContext(view.frame.size)
view.layer.renderInContext(UIGraphicsGetCurrentContext())
let memedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
//Show tool and nav bars
self.toolBar.hidden = false
self.navBar.hidden = false
return memedImage
}
答案 1 :(得分:1)
我没有在做屏幕截图,但是我有类似的需求-我有一个viewController,其底部有一个UIToolbar,有时我想隐藏它。我为其创建了出口。并使用
@IBOutlet weak var toolBar: UIToolbar!
// later in the code where you don't want it visible anymore
toolBar.isHidden = true
,但是在窗口底部仍然为工具栏分配了空间;并且如果scrollView中紧挨着的项目足够大,那么很明显那里仍然有某些东西会阻塞空间。
我通过选择工具栏并使用Embed-> Stack View解决了此问题。确保并调整stackview的约束,将每个顶部,底部,左侧和右侧设置为0。现在,同一行代码将隐藏工具栏,并且由于它位于UIStackView中,因此不再占用任何空间。>
您应该能够执行相同操作;隐藏工具栏,然后捕捉图像。
答案 2 :(得分:0)
func getScreenShot() -> UIImage {
UIGraphicsBeginImageContext(view.frame.size)
view.layer.renderInContext(UIGraphicsGetCurrentContext())
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
return image
}
这应隐藏导航栏和工具栏。您可以在照片中找到图像。
答案 3 :(得分:0)
此后,只需在代码中的特定位置使用此(下)行即可 您的工具栏将被永久删除:
self.tabBarController?.tabBar.isHidden = true
答案 4 :(得分:0)
我曾经遇到过同样的问题,但是我尝试了您的解决方案,但是那是错误的,我想您正在尝试解决内置在工具栏中的默认导航控制器,而您需要解决在故事中创建的自己的工具栏板。我按照以下方法解决了问题
@IBOutlet weak var toolbarView: UIToolbar!
self.navigationController?.isNavigationBarHidden = true
self.toolbarView.isHidden = true
答案 5 :(得分:0)
Swift 5.1
隐藏工具栏为
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.setToolbarHidden(true, animated: true
}