gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 14:57:12 25 4
gpt4 key购买 nike

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

NC -> A -> B

B 通过推送转场出现。

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 可能会被其他导航 Controller 共享。

最佳答案

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,但您可以从我的框架和示例项目中复制所有内容。

enter image description here

关于ios - 使导航堆栈中只有一个导航栏透明 iOS Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49217441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com