如何使导航栏在特定视图上半透明?

时间:2015-08-04 20:01:14

标签: ios swift uinavigationbar

我有三个视图的向下钻取层次结构,所有这些都嵌入在导航控制器中。我希望最后一个视图让导航栏保持半透明,但在返回前两个第一个视图时导航栏不是半透明的。我已经尝试在视图self.navigationController?.navigationBar.translucent = true; func中实现viewDidLoad代码,但没有用,它只是保持不变。我该怎么办?

3 个答案:

答案 0 :(得分:0)

很抱歉,如果我不理解这个,但你想让半透明的酒吧再次消失并隐藏起来?如果是这种情况那么你应该将栏设置为隐藏在ViewWillDisappear()

那应该可以解决你的问题!

答案 1 :(得分:0)

在上一个视图中

override func viewWillAppear(animated: Bool) {
   self.navigationController?.navigationBar.translucent = true
}

override func viewWillDisappear(animated: Bool) {
   self.navigationController?.navigationBar.translucent = false 
}

答案 2 :(得分:-1)

您可以在程序中尝试此方法 请记住在- (void)viewWillAppear:(BOOL)animated方法中执行此方法 如果您在程序中没有使用导航控制器,那么您将使用自己的导航栏替换self.navigationController

- (void)navigationBarInitializationWithTransparentOption:(BOOL)isAffirmative
{
    //An optional statement below, just to make sure the navigationBar is in its place:
    self.navigationController.navigationBarHidden = NO;//(or separate ".navigationBarHidden" to ".navigationBar.hidden")
    //
    //TO MAKE THE BACKGROUND OF THE CURRENT NAVIGATION BAR TRANSLUCENT:
    [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
    [self.navigationController.navigationBar setTranslucent:isAffirmative];
    //set NO in the following statement will leave the border of the navigation bar visible
    self.navigationController.navigationBar.clipsToBounds = YES;
}