导航栏在用户拖动时设置色调颜色
Navigation Bar is setting tint color when user drag
我正在开发一个应用程序,其中有一个带有 table 视图的主视图控制器。当用户触摸 table 视图的项目时,应用程序会转到详细视图控制器。
详细视图控制器有一个清晰的彩色导航栏,而主视图控制器有一个白色导航栏。
我的问题是,当我在详细视图控制器中并拖动视图的左边框并尝试向左滑动以返回主视图控制器时,导航栏变为白色。如果我没有完成移动并停留在详细视图控制器上,导航栏将保持白色。
这个 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;
}
您应该将放入 viewDidLoad 和 viewWillAppear 的内容移动到 viewDidAppear(在详细视图控制器中)
详细视图控制器:在 ViewWillAppear 方法中添加以下代码。
[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];
我正在开发一个应用程序,其中有一个带有 table 视图的主视图控制器。当用户触摸 table 视图的项目时,应用程序会转到详细视图控制器。 详细视图控制器有一个清晰的彩色导航栏,而主视图控制器有一个白色导航栏。 我的问题是,当我在详细视图控制器中并拖动视图的左边框并尝试向左滑动以返回主视图控制器时,导航栏变为白色。如果我没有完成移动并停留在详细视图控制器上,导航栏将保持白色。 这个 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;
}
您应该将放入 viewDidLoad 和 viewWillAppear 的内容移动到 viewDidAppear(在详细视图控制器中)
详细视图控制器:在 ViewWillAppear 方法中添加以下代码。
[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];