iPhone / Objective-C - 更改默认的“navigationItem.prompt”颜色

时间:2011-04-29 02:26:50

标签: iphone objective-c uinavigationbar

有没有办法将self.navigationItem.prompt颜色设置为白色?目前它是黑色。

这就是我现在设置导航栏颜色的方式:

// Set top navigation bar.
UINavigationBar *bar = [navController navigationBar];
[bar setTintColor:[UIColor colorWithRed:180.0/255.0 green:25.0/255.0 blue:34.0/255.0 alpha:1]];
UIImageView *navBar = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
[navBar release];

..这就是我设置navigationItem.prompt

的方式
self.navigationItem.prompt = @"Tap image for more options.";

5 个答案:

答案 0 :(得分:7)

现在可以在iOS 5或更高版本中使用。试试这段代码。

[[UINavigationBar appearance] setTitleTextAttributes:
      [NSDictionary dictionaryWithObjectsAndKeys:
       [UIColor whiteColor], UITextAttributeTextColor, nil]];

答案 1 :(得分:3)

我担心提示颜色是硬编码而不是可自定义的。

我设法使用以下(棘手的)黑客自定义提示,替换提示符:

  • 设置navigationItem.prompt = @""以强制navigationBar显示空提示
  • 设置navigationItem.titleView
    • 一个UILabel或任何你想要替换标题的内容,在里面作为一个子视图来替换提示符:
      • 另一个 UILabel 作为提示,按您喜欢的方式设置
      • 该标签以x为中心,y = -31px偏移(正常提示的位置)
      • 确保titleView具有.clipsToBounds = NO,以便正确绘制自定义提示

我通过用{em>覆盖UIViewController.setTitle:来覆盖所有我的控制器(它不能正常工作/构建,它是一个更复杂的代码的快速提取,但它显示了逻辑):

- (void)setTitle:(NSString *)title {
  [super setTitle:title];
  UILabel *titleLabel = ... build the titleLabel
  titleLabel.text = title;
  if (self.navigationItem.prompt) {
    UILabel *promptLabel = ... build the promptLabel
    promptLabel.text = self.navigationItem.prompt;
    self.navigationItem.prompt = @"";
    promptLabel.centerX = titleLabel.width/2;
    promptLabel.top = -31;
    [titleLabel addSubview:promptLabel];
    titleLabel.clipsToBounds = NO;
  }
  self.navigationItem.titleView = titleLabel;
}

答案 2 :(得分:1)

尝试这种方式。

navigationhBar.tintColor = [UIColor colorWithRed:0.4039216041564941 green:0.6470588445663452 blue:0.062745101749897 alpha:1];

答案 3 :(得分:1)

在iOs 5中,我改变了UINavigationBar的外观。您可以使用以下代码更改提示颜色

   [[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor grayColor], UITextAttributeTextColor, [UIColor colorWithRed:10 green:20 blue:30 alpha:1.0f], UITextAttributeTextShadowColor, [NSValue valueWithUIOffset:UIOffsetMake(0, -1)], UITextAttributeTextShadowOffset, nil]];

我以前是随机数&颜色,您可以通过自己的选择自定义颜色。希望它会有所帮助。

答案 4 :(得分:-3)

夫特:

        self.navigationController?.navigationBar.titleTextAttributes =
                 [NSForegroundColorAttributeName : UIColor.white]
        self.navigationController?.navigationBar.barTintColor = UIColor.red