仅使导航堆栈中的一个导航栏透明 iOS Swift

Making only one navigation bar in Navigation Stack transparent iOS Swift

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

NC -> A -> B

B 通过推送转场出现。

A的navigationbar使用以下方式透明化

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 中按返回按钮到 return 到 A 时,B 的导航栏会在消失前短暂出现。如何解决这个问题?

PS:我不想将代码添加到 B 的覆盖方法中,因为 B 可能会被其他导航控制器共享。

The issue is that when Back button is pressed in B to return to A, The navigation bar of B appears momentarily before disappearing. How to solve this issue?

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

这是你想要的吗?如果是这样,我在 Github 上做了一个示例项目,仅供您使用,也供以后 iOS 的其他新手使用。

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

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