自从我开始处理大型标题以来,导航栏出现了很多问题。
其中之一是,当我设置背景以使视图A中的导航控制器透明时,我无法重置导航控制器并在视图B上设置背景颜色。
我使用的方法是每个人使用最多的方法。
将UIImage设置为透明,当视图消失时设置为Nil
但是无论如何都行不通。我一直在搜索,但找不到解决方案。。
S ...我去找工作了,甚至不起作用。.因为我的导航栏没有完全显示在屏幕上。
我已经为这个问题尝试了很多方法,但是我无法弄清楚。
使它透明的代码是这样的:
self.navigationController?.navigationBar.barTintColor = UIColor.clear
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
self.navigationController?.navigationBar.backgroundColor = .clear
要恢复它,我正在使用这个:
self.navigationController?.navigationBar.setBackgroundImage(getNavigationBarBackground(), for: .default)
self.edgesForExtendedLayout = UIRectEdge.top
self.navigationController?.navigationBar.backgroundColor = BBColor.sapphire
self.navigationController?.navigationBar.barTintColor = BBColor.sapphire
self.navigationController?.navigationBar.isTranslucent = false
self.navigationController?.setNavigationBarHidden(false, animated: false)
GetNavigationBackGround在哪里:
func getNavigationBarBackground()-> UIImage {
let rect = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width , height: 150)
UIGraphicsBeginImageContextWithOptions(rect.size, false, 0)
BBColor.sapphire.setFill()
//BBColor.bgblueColor.setFill()
//let path = UIBezierPath(ovalIn: rect)
let path = UIBezierPath(rect: rect)
path.fill()
let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return image
}
这些是我遇到的实际问题的图片
The navigation bar is appearing on debug The navigation bar is not appearing on screen
如果有人可以帮助我解决这个问题,我将不胜感激。许多开发人员也可能会遇到问题。
谢谢