【问题标题】:iOS: changing the tint color of the back button?iOS:改变后退按钮的色调?
【发布时间】:2012-09-06 15:02:39
【问题描述】:

我有一个推送 UIViewController 的导航控制器。当用户按下某个按钮时,我想更改导航项后退按钮的色调颜色。这可能吗?我曾尝试使用[UIBarButtonItem appearance] setTintColor:,但它仅适用于初始化(例如在 viewDidLoad 中),否则无效。

【问题讨论】:

    标签: iphone ios ipad uikit uibarbuttonitem


    【解决方案1】:

    试试这个......

    您需要使用带有自定义视图的 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;
    

    【讨论】:

      【解决方案2】:

      对我来说最简单的事情是为所有 uibarbutton 项目设置色调颜色:

      [[UIBarButtonItem appearance]setTintColor:[UIColor yourColor]];
      

      然后将我创建并放置在导航栏上的显式导航按钮的 tintcolor 显式设置为其他颜色...

      当我想要做的只是改变色调时,让我免去创建自定义后退按钮的麻烦。

      【讨论】:

      • 这仅适用于普通栏按钮。但不适用于后退按钮。
      【解决方案3】:

      在点击按钮时调用的方法中,只需输入[self.navigationItem.backBarButtonItem setTintColor:[UIColor *whateverColorYouWant*]];我还没有测试过,但我 99% 确定它会起作用

      编辑: 刚刚测试过,可以的。

      【讨论】:

      • 我刚试过这个,它崩溃了,因为 backBarButtonItem 为空。知道为什么会这样以及如何解决吗?
      • 您是否要更改后退按钮的颜色(它是一种类似箭头的形状)?如果只是一个普通的barButtonItem,那么可以尝试改变leftBarButtonItem和rightBarButtonItem的tintColor。
      • 我是指导航控制器提供的箭头形状的后退按钮,而不是我添加的按钮。
      • 你想用什么方法改变色调?你在其他地方引用过它吗?
      【解决方案4】:

      这是一个更改后退按钮的文本和颜色的代码:

      - (void)viewDidLoad
      {
          UIBarButtonItem *backButton = [UIBarButtonItem new];
          [backButton setTitle:@"Back"];
          [backButton setTintColor:[UIColor yellowColor]];
          [[self navigationItem] setBackBarButtonItem:backButton];
      }
      

      【讨论】:

      • 这真的有效吗?我记得您需要将 setLeftBarButtonItem 与自定义按钮一起使用并将 hidesBackbutton 设置为 TRUE 但您不能覆盖后退按钮项属性(因为它是在导航时生成的)...
      【解决方案5】:

      试试这个:

      [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class],[UIToolbar class], nil] setTintColor:[UIColor redColor]];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-16
        • 1970-01-01
        • 2020-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多