10

我一直在使用 UIAppearance 自定义我的 UIBarButtonItems,但我不知道如何更改后退按钮的文本样式。这是怎么做到的?

我知道如何设置背景图片:

[[UIBarButtonItem appearance]
   setBackButtonBackgroundImage:[UIImage imageNamed:@"arrow-button-static.png"]
   forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

  [[UIBarButtonItem appearance]
   setBackButtonBackgroundImage:[UIImage imageNamed:@"arrow-button-pressed.png"]
   forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
4

4 回答 4

23

您不能仅更改后退按钮的文本属性。(或者至少,您不能使用外观代理在全局范围内这样做。)Apple 显然打算使其文本与导航栏中其他按钮的文本匹配,只有其形状(背景图像)不同。

正如@DhruvGoel 所说,您可以这样设置文本属性:

NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                       [UIColor redColor],UITextAttributeTextColor,
                                       nil];

[[UIBarButtonItem appearance] setTitleTextAttributes:attributes                   
                          forState:UIControlStateNormal];

或者,仅对于导航栏中的条形按钮:

    [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil]
            setTitleTextAttributes:attributes                   
                          forState:UIControlStateNormal];

有关如何在视图/视图控制器层次结构的特定部分自定义外观的更多详细信息,请参阅UIAppearance协议文档。尽管正如我所说,这不会让您在全局范围内使后退按钮文本与同一导航栏中其他按钮的文本不同。(当你的视图控制器出现时,你可以直接改变每一个,但这可能不是一个好主意。)

哦,对弹劾那件事感到抱歉。

于 2013-03-25T02:52:09.390 回答
9

要更改后退按钮项目文本颜色,您可以使用以下命令:

NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                           [UIColor redColor],UITextAttributeTextColor,
                                           nil];

[[UIBarButtonItem appearance] setTitleTextAttributes:attributes                   
                              forState:UIControlStateNormal];

您可以使用在 UIStringDrawing.h 中找到的键,即 UITextAttributeFont、UITextAttributeTextColor、UITextAttributeTextShadowColor 和 UITextAttributeTextShadowOffset,为文本属性字典中的标题指定字体、文本颜色、文本阴影颜色和文本阴影偏移

请注意,这仅适用于 iOS 5.0 及更高版本

于 2013-02-04T18:47:59.400 回答
2

如果要更改文本和后退按钮的全局颜色,这里有一个简单的解决方案(在 Swift 3 中):

UINavigationBar.appearance().tintColor = UIColor.blue
于 2017-02-02T18:23:31.863 回答
1

您可以使用 UIButton 自定义后退栏按钮项。

UIButton *backButton = [[UIButton alloc] initWithFrame:frame];
UIBarButtonItem *backBarButton = [[UIBarButtonItem alloc] initWithCustomView:backButton];
backButton.titleLabel.shadowColor = [UIColor blackColor];
backButton.titleLabel.shadowOffset = CGSizeMake(0, 1);
backButton.titleLabel.textColor = [UIColor whiteColor];

[self.navigationItem setLeftBarButtonItem:backBarButton];
于 2013-07-19T09:27:51.247 回答