首页 文章

在导航堆栈中只有一个导航栏透明iOS Swift

提问于
浏览
0

我有一个导航流程的导航控制器,如下所示:

NC - > A - > B.

B通过push segue出现 .

A的导航栏使用以下内容透明

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    self.navigationController!.navigationBar.isTranslucent = true
    self.navigationController!.navigationBar.setBackgroundImage(UIImage(), for: .default)
    self.navigationController!.navigationBar.shadowImage = UIImage()
}

并且在viewWillDisappear中半透明设置为false,以便B可以拥有通常的导航栏:

override func viewWillDisappear(_ animated: Bool) {
    super.viewDidDisappear(animated)
    self.navigationController!.navigationBar.isTranslucent = false
}

问题是当在B中按下后退按钮返回A时,B的导航栏会在消失之前暂时出现 . 如何解决这个问题?

PS:我不想为B的重写方法添加代码,因为B可能被其他导航控制器共享 .

1 回答

  • 1

    问题是当在B中按下后退按钮返回A时,B的导航栏会在消失之前暂时出现 . 如何解决这个问题?

    您无需在 viewWillDisappear 方法中切换任何内容 . 只需在每个屏幕中切换 viewWillAppear 方法中的所有内容即可 .

    这是你想要的吗?如果是这样的话,我在Github上为你做了一个示例项目,以及将来对iOS新手的其他人 .

    https://github.com/glennposadas/showhidenavbar-ios

    虽然它使用我非常简单的cocoapod,但您可以从我的框架和示例项目中复制所有内容 .

    enter image description here

相关问题