首页 文章

IOS 7导航栏文本和箭头颜色

提问于
浏览
230

我想将导航栏的背景设置为 black ,其中的所有颜色都是 white .

所以,我使用了这段代码:

[[UINavigationBar appearance] setTitleTextAttributes:
     [NSDictionary dictionaryWithObjectsAndKeys:
      [UIColor whiteColor],
      NSForegroundColorAttributeName,
      [UIColor whiteColor],
      NSForegroundColorAttributeName,
      [NSValue valueWithUIOffset:UIOffsetMake(0, -1)],
      NSForegroundColorAttributeName,
      [UIFont fontWithName:@"Arial-Bold" size:0.0],
      NSFontAttributeName,
      nil]];

但后退按钮 text colorarrowbar button 仍然默认为 blue color .
如何改变这些颜色,如下图所示?

enter image description here

10 回答

  • 1

    似乎 iOS Settings 中的 Accessibility 控件几乎覆盖了您尝试对导航栏按钮执行颜色的所有操作 . 确保你将所有设置都设置为默认位置(设置增加对比度, bold text ,按钮形状等关闭),否则你会进一步追求它 .

  • 744
    [[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
    
  • 12

    要更改 UINavigationBar Headers 的颜色,请使用以下代码:

    [self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor]];
    

    UITextAttributeTextColor 在最新的ios 7版本中已弃用 . 请改用 NSForegroundColorAttributeName .

  • 5

    Vin的回答对我很有帮助 . 以下是使用Xamarin.iOS / MonoTouch的C#开发人员的相同解决方案:

    var navigationBar = NavigationController.NavigationBar; //or another reference
    navigationBar.BarTintColor = UIColor.Blue;
    navigationBar.TintColor = UIColor.White;
    navigationBar.SetTitleTextAttributes(new UITextAttributes() { TextColor = UIColor.White });
    navigationBar.Translucent = false;
    
  • 36

    如果您要更改 Headers text sizetext color ,则必须更改NSDictionary titleTextAttributes,对于其中的两个对象:

    self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Arial" size:13.0],NSFontAttributeName,
                                                                      [UIColor whiteColor], NSForegroundColorAttributeName, 
                                                                      nil];
    
  • 84

    我认为以前的答案是正确的,这是做同样事情的另一种方式 . 我在这里与其他人分享,以防万一它对某人有用 . 这是您可以在ios7中更改导航栏的文本/ Headers 颜色的方法:

    UIColor *red = [UIColor colorWithRed:254.0f/255.0f green:0.0f/255.0f blue:0.0f/255.0f alpha:1.0];
    NSMutableDictionary *navBarTextAttributes = [NSMutableDictionary dictionaryWithCapacity:1];
    [navBarTextAttributes setObject:red forKey:NSForegroundColorAttributeName ];
    self.navigationController.navigationBar.titleTextAttributes = navBarTextAttributes;
    
  • 20

    UINavigationBar 的某些属性的行为已从 iOS 7 更改 . 您可以在下面显示的图像中看到:

    enter image description here


    我想与你分享两个美丽的链接 . 有关详细信息,您可以浏览以下链接:


    Apple Documentation for barTintColor说:

    默认情况下,此颜色为半透明,除非您将半透明属性设置为NO .

    Sample Code :

    self.navigationController.navigationBar.barTintColor = [UIColor blackColor];
    self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
    [self.navigationController.navigationBar 
     setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
    self.navigationController.navigationBar.translucent = NO;
    
  • 2

    Swift3, ios 10

    要在AppDelegate didFinishLaunchingWithOptions 中全局指定颜色:

    let textAttributes = [NSForegroundColorAttributeName:UIColor.white]
    UINavigationBar.appearance().titleTextAttributes = textAttributes
    

    Swift 4, iOS 11

    let textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white]
    UINavigationBar.appearance().titleTextAttributes = textAttributes
    
  • 8

    Swift / iOS8

    let textAttributes = NSMutableDictionary(capacity:1)
    textAttributes.setObject(UIColor.whiteColor(), forKey: NSForegroundColorAttributeName)
    navigationController?.navigationBar.titleTextAttributes = textAttributes
    
  • 11

    enter image description here

    这个花了我大约半天时间弄明白,但这对我有用 . 在初始化navigationController的rootViewController中,我将此代码放在viewDidAppear方法中:

    //set bar color
    [self.navigationController.navigationBar setBarTintColor:[UIColor colorWithRed:85.0/255.0 green:143.0/255.0 blue:220.0/255.0 alpha:1.0]];
    //optional, i don't want my bar to be translucent
    [self.navigationController.navigationBar setTranslucent:NO];
    //set title and title color
    [self.navigationItem setTitle:@"Title"];
    [self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor]];
    //set back button color
    [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAttributeTextColor,nil] forState:UIControlStateNormal];
    //set back button arrow color
    [self.navigationController.navigationBar setTintColor:[UIColor whiteColor]];
    

    我的完整帖子here

相关问题