专家们,
我正在使用以下代码在捕获屏幕视图之前隐藏工具和导航栏。但是图像仍然显示两个条形...我在做什么错?
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
}
谢谢
最佳答案
我没有在做屏幕截图,但是我有一个类似的需求-我有一个viewController,其底部有一个UIToolbar,有时我想隐藏它。我为其创建了出口。并使用
@IBOutlet weak var toolBar: UIToolbar!
// later in the code where you don't want it visible anymore
toolBar.isHidden = true
但是在窗口底部仍然为工具栏分配了空间;如果scrollView中紧挨着的项目足够大,则很明显那里仍然有某些东西会阻塞空间。
我通过选择工具栏并使用“嵌入”->“堆栈视图”解决了这一问题。确保并调整stackview的约束,将每个上,下,左和右设置为0。现在同一行代码将隐藏工具栏,并且由于它位于UIStackView中,因此不再占用任何空间。
您应该能够执行相同操作;隐藏工具栏,然后捕捉图像。