导航栏出现在“调试视图层次结构”中,但没有出现在“屏幕”中

时间:2019-07-12 20:05:56

标签: ios swift uikit

自从我开始处理大型标题以来,导航栏出现了很多问题。

其中之一是,当我设置背景以使视图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

如果有人可以帮助我解决这个问题,我将不胜感激。许多开发人员也可能会遇到问题。

谢谢

0 个答案:

没有答案