自定义导航栏在转到另一个视图时重叠

时间:2019-03-07 00:26:17

标签: swift uinavigationcontroller uinavigationbar

我一直在构建一个应用程序,该应用程序使用自定义的Header Image替换XCode提供的标题图像。我有不同的类来处理两个不同的视图控制器。一个叫做MainViewController,另一个叫做CategoryViewController。由于我也使用大标题,因此以下代码用于从MainViewController中删除标准的Navigation Controller图像,该图像是通过this article在线找到的。

struct System {
        static func clearNavigationBar(forBar navBar: UINavigationBar) {
            navBar.setBackgroundImage(UIImage(), for: .default)
            navBar.shadowImage = UIImage()
            navBar.isTranslucent = false
        }
    }

然后将以下内容放入视图中将出现的方法。

override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        if let navController = navigationController {
            System.clearNavigationBar(forBar: navController.navigationBar)
            navController.view.backgroundColor = .clear
        }
    }

现在,我的问题是,当我单击对CategoryViewController执行segue的按钮时,使用CategoryViewController上的相同代码,我更改了navController.view.backgroundColor = .black。问题是我遇到了一个我无法修复的非常奇怪的重叠错误。

enter image description here

在不牺牲标题的内置动画或使用不同代码获得相同结果的情况下,还有其他其他方法可以解决内置问题吗?

谢谢大家!

1 个答案:

答案 0 :(得分:0)

找到了!我只是再次写了其他ViewController继承的相同代码。我运行两次的代码就是该错误。因此,CategoryViewController TopBar设置为固有,您也可以简单地添加另一个自定义图像,该应用程序将完美运行而不会出现任何错误。