我在一个NavigationController中嵌入了多个VC。 我有一个VC,让我们把它命名为VCNotTransparent,我希望条形图不透明,而在其他VC上我希望它是透明的。 因此,在主VC中,我添加了这些行以使条形透明:
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationController?.navigationBar.shadowImage = UIImage()
navigationController?.navigationBar.isTranslucent = true
所以现在我的所有酒吧在应用程序中都是透明的。 如果VCNotTransparent不改变所有其他VC,它怎么能不透明?我想到的一个解决方案是仅在VCNotTransparent中添加一个新的导航栏,但我不知道该怎么做。
修改
我也尝试在自己的NavigationController中嵌入VCNotTransparent,它几乎可以工作,但问题是我从它导航到其他一些VC并且它们也变得不透明,因为它们是子导航VCNotTransparent。
答案 0 :(得分:1)
通过枚举处理 -
在您的MainVC中进行以下操作 -
public enum NavigationType: Int {
case transparent = 1
case notTransparent = 2
}
var currentNavigationType: NavigationType?
override func viewDidLoad() {
super.viewDidLoad()
self.currentNavigationType = .transparent // default
self.setupNavigationControllerStyle()
}
func setupNavigationControllerStyle (){
switch self.currentNavigationType! {
case .transparent:
//do code here for transparent
case .notTransparent:
//do code here for not transparent
default:
break
}
}
默认会显示透明条。在哪个控制器中你不想透明条只是从那里更新currentNavigationType
属性,如下所示 -
class VCNotTransparent: MainVC {
override func viewWillAppear(_ animated: Bool) {
self.currentNavigationType = .notTransparent
super.viewWillAppear(animated)
}
}