在不同页面上的iOS不同的导航栏颜色(iOS Different navigation bar co

2019-10-20 09:54发布

我将如何改变基于用户是在什么页面 导航的颜色

我想这样做类似于当用户点击某个类别,它变成了按钮的衰落格式的颜色在探索类别的藤应用程序使用的东西。 任何思考如何做到这一点?

Answer 1:

你可以尝试设置在prepareForSegue导航栏色调颜色:方法(在你的控制器丝毫四个按钮)这样的

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:"segueIdentifier here"]) { [self.navigationController.navigationBar setBarTintColor:[UIColor redColor]]; } }

不要忘了重新设置导航栏色调的颜色,当你回来(在viewWillAppear中做到这一点)

或者你可以尝试做这在方法viewWillAppear中所有的控制器:像这样的

- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.navigationController.navigationBar setBarTintColor:[UIColor redColor]]; }



Answer 2:

对于夫特3.0溶液(在iOS 10测试)

嗨! 我面临着同样的问题,终于我找到了很好的解决方案。

设置导航栏在viewWillAppear中方法的颜色,当你从父母推到子视图正常工作。 导航条颜色之间的过渡是平滑的。

class ChildViewController: UIViewController {

...

override func viewWillAppear(_ animated: Bool) {
       self.navigationController?.navigationBar.barTintColor = UIColor.white
    }

但它并没有真正工作了酒吧的在ParentViewController颜色设置为原来的一个。 你可以看到颜色的变化,看起来只是丑陋和不专业。

为了使颜色变回来ParentViewController顺利时,在方法中做willMove(toParentViewController父:UIViewController的?)ChildViewController:

class ChildViewController: UIViewController {

...

override func willMove(toParentViewController parent: UIViewController?) {
     self.navigationController?.navigationBar.barTintColor = UIColor.red

由于这种方法,你可以在一个浏览器不同的页面与平滑色彩设定不同的导航栏的颜色以两种方式视图之间转换 - 将一个子视图,也回来父。



Answer 3:

这是如何改变不同的页面的导航条颜色迅速版本。

你可以写在这行代码viewDidLoad()中要更改导航栏的颜色的任何视图控制器的方法。

self.navigationController!.navigationBar.barTintColor = UIColor.orangeColor()

然后就可以,这样,当你回到从另一个不同的控制器相同的视图控制器颜色保持同样的使用方法viewWillAppear中()方法

viewWillAppear(){
self.navigationController!.navigationBar.barTintColor = UIColor.orangeColor()
}


文章来源: iOS Different navigation bar color on different pages