代码之家  ›  专栏  ›  技术社区  ›  sandpat

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

  •  0
  • sandpat  · 技术社区  · 8 年前

    我有一个navigationcontroller,其导航流如下所示:

    NC->A->B

    B通过推送序列出现。

    的导航栏是透明的

    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()
    }
    

    并且在视图中将“is半透明”设置为false将消失,以便B可以使用常用的导航栏:

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

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

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

    1 回复  |  直到 8 年前
        1
  •  1
  •   Glenn Posadas    8 年前

    问题是,当按下B中的后退按钮返回到A时 B的导航栏在消失前短暂出现。如何 解决此问题?

    您不需要在 viewWillDisappear 方法只需切换你的 viewWillAppear 方法。

    这就是你想要的吗?如果是这样的话,我在Github上做了一个示例项目,只为您和其他将来不熟悉iOS的人做。

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

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

    enter image description here