用户拖动时导航栏设置着色

时间:2016-04-05 20:51:59

标签: ios objective-c uinavigationbar

我正在开发一个应用程序,我有一个带有表视图的主视图控制器。当用户触摸表视图的项目时,应用程序将转到详细视图控制器。 细节视图控制器有一个清晰的颜色导航栏,而主视图控制器有一个白色的导航栏。 我的问题是,当我在详细视图控制器并拖动视图的左边框并尝试向左滑动以返回主视图控制器时,导航栏将变为白色。如果我没有完成移动并停留在细节视图控制器上,导航栏将保持白色。 这个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;
}

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

详细视图控制器:在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];