【发布时间】:2012-09-06 15:02:39
【问题描述】:
我有一个推送 UIViewController 的导航控制器。当用户按下某个按钮时,我想更改导航项后退按钮的色调颜色。这可能吗?我曾尝试使用[UIBarButtonItem appearance] setTintColor:,但它仅适用于初始化(例如在 viewDidLoad 中),否则无效。
【问题讨论】:
标签: iphone ios ipad uikit uibarbuttonitem
我有一个推送 UIViewController 的导航控制器。当用户按下某个按钮时,我想更改导航项后退按钮的色调颜色。这可能吗?我曾尝试使用[UIBarButtonItem appearance] setTintColor:,但它仅适用于初始化(例如在 viewDidLoad 中),否则无效。
【问题讨论】:
标签: iphone ios ipad uikit uibarbuttonitem
试试这个......
您需要使用带有自定义视图的 UIBarButtonItem。像这样的:
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 70, 30)];
[button addTarget:target action:@selector(back:) forControlEvents:UIControlEventTouchUpInside];
[button setImage:[UIImage imageNamed:@"back_button.png"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"back_button_tap.png"] forState:UIControlStateHighlighted];
UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
并且把按钮放到导航栏上,一般在一个带有 UINavigationController 的控制器中:
self.navigationItem.leftBarButtonItem = buttonItem;
【讨论】:
对我来说最简单的事情是为所有 uibarbutton 项目设置色调颜色:
[[UIBarButtonItem appearance]setTintColor:[UIColor yourColor]];
然后将我创建并放置在导航栏上的显式导航按钮的 tintcolor 显式设置为其他颜色...
当我想要做的只是改变色调时,让我免去创建自定义后退按钮的麻烦。
【讨论】:
在点击按钮时调用的方法中,只需输入[self.navigationItem.backBarButtonItem setTintColor:[UIColor *whateverColorYouWant*]];我还没有测试过,但我 99% 确定它会起作用
编辑: 刚刚测试过,可以的。
【讨论】:
这是一个更改后退按钮的文本和颜色的代码:
- (void)viewDidLoad
{
UIBarButtonItem *backButton = [UIBarButtonItem new];
[backButton setTitle:@"Back"];
[backButton setTintColor:[UIColor yellowColor]];
[[self navigationItem] setBackBarButtonItem:backButton];
}
【讨论】:
试试这个:
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class],[UIToolbar class], nil] setTintColor:[UIColor redColor]];
【讨论】: