【问题标题】:Navigation Bar is setting tint color when user drag导航栏在用户拖动时设置色调颜色
【发布时间】:2016-04-05 20:51:58
【问题描述】:

我正在开发一个应用程序,其中有一个主视图控制器,上面有一个表格视图。当用户触摸表格视图的一个项目时,应用程序会转到详细视图控制器。 详细视图控制器有一个清晰的颜色导航栏,而主视图控制器有一个白色导航栏。 我的问题是,当我在详细视图控制器中并拖动视图的左边框并尝试向左滑动以返回主视图控制器时,导航栏变为白色。如果我没有完成移动并停留在详细视图控制器上,导航栏将保持白色。 这张 gif 更好地展示了这种情况:

那么,当我尝试拖动视图时,如何避免导航栏变白?

更新: 在主视图控制器上:

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:YES];
    self.navigationController.navigationBar.translucent = NO;
    self.navigationController.navigationBar.barTintColor = [UIColor whiteColor];
}

在细节视图控制器上:

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    self.navigationController.toolbarHidden = YES;
    self.navigationController.toolbar.tintColor = [UIColor clearColor];
}
- (void)viewDidLoad{
    [super viewDidLoad];    
    self.navigationController.navigationBar.translucent = YES;
}

【问题讨论】:

  • 你能给我们看一些代码吗?您如何以及何时设置导航栏的颜色?
  • @Randy 我刚刚用一些代码编辑了这个问题。
  • 您可以尝试将您在viewDidLoadviewWillAppear 中的操作移动到viewDidAppear 吗? (在您的详细视图控制器中)
  • 不客气,我加了一个答案,你可以接受,这样大家就可以快速看到了

标签: ios objective-c uinavigationbar


【解决方案1】:

您应该将放入 viewDidLoad 和 viewWillAppear 中的内容移动到 viewDidAppear(在您的详细视图控制器中)

【讨论】:

    【解决方案2】:

    详细视图控制器:在 ViewWillApper 方法中添加以下代码。

    [self.navigationController.navigationBar setBackgroundImage:[UIImage new]
                                                  forBarMetrics:UIBarMetricsDefault];
    self.navigationController.navigationBar.shadowImage = [UIImage new];
    self.navigationController.navigationBar.translucent = YES;
    UIView *bg = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 60)];
    bg.backgroundColor = [UIColor yellowColor];
    [self.view addSubview:bg];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      相关资源
      最近更新 更多