回栏按钮项目的iPhone设置着色颜色(iPhone Set Tint Color of Back

2019-06-26 10:38发布

我想设置一个导航控制器中的后退按钮的色调的颜色,但没有什么工作。 我试过了

[self.navigationController.backBarButtonItem setTintColor:myColor];
//myColor was previously set

但它保持默认的色彩

Answer 1:

我相信barButtonItem是只读的。 (我也不太清楚这一点,有人纠正我,如果我错了)

为了让色调的颜色这些按钮,这就是我会做:

在应用程序委托中,添加几行代码:

UIBarButtonItem *barButtonAppearance = [UIBarButtonItem appearance];
[barButtonAppearance setTintColor:[UIColor redColor]]; // Change to your colour

第一行设置一个外观代理,所以我相信这个工程太,如果你喜欢更少的代码:

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

我希望这对你的作品! (这改变的UIBarButtonItem的所有实例)



Answer 2:

您不能直接改变UINavigationItem的色调颜色。 你必须改变导航栏和你栏按钮会自动改变其颜色的色调颜色。

这些行添加在你的viewWillAppear中的方法

[[self.navigationController navigationBar] tintColor] = [UIColor myColor];

或者您可以创建一个自定义按钮和初始化你的UIBarButtonItem为

UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:yourUIButton];


Answer 3:

这为我工作。

[self.navigationController.navigationBar setTintColor:[UIColor redColor]];

这是非常相似的第二个答案...



Answer 4:

如果你喜欢做在Interface Builder无需编写代码:

  1. 选择您的UINavigationBar的(内部的UINavigationController)

  1. 在属性检查器中,找到“色调” - 这就是设置后退按钮的颜色。 请注意,“酒吧色调”是不一样的 - 这台导航栏的背景颜色。

这是设置后退按钮的外观这种方式,而不是试图实现leftBarButtonItem重要,因为实施leftBarButtonItem将禁用内置的后退导航手势,如滑动回去。



Answer 5:

斯威夫特方式:

它改变了导航的所有项目。

在AppDelegate中做这样的事情:

let navControl = UINavigationBar.appearance()
    navControl.tintColor = UIColor.grayColor()


Answer 6:

那么你当然可以只改变后退按钮的导航栏上的颜色或者是任何栏按钮。 这里有一个小片段来做到这一点。

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonItemStylePlain target:self action:nil];
backButton.tintColor = [UIColor blackColor];
[self.navigationItem setBackBarButtonItem:backButton];
[backButton release];

嗯,这仅仅是达到这一目标的途径之一。 我希望这有帮助!! 我知道它的答案已经被接受,但我想给一个适当的片段吧。 干杯!!! 编码愉快!



Answer 7:

如果你想将它设置为预定义的样式,你可以使用

    [navigationBar setBarStyle: UIBarStyleBlack];


Answer 8:

放在AppDelegate中下面的代码,将设置颜色后退按钮全球

//Set color of BackButtonItem globally

[[UIBarButtonItem appearance] setTintColor:[UIColor colorWithRed:5.0/255.0 
green:127.0/255.0 blue:173.0/255.0 alpha:1.0]];

这是在IOS 5及以上的支持



Answer 9:

它总是为我工作:

  1. self.navigationItem.leftBarButtonItem = [self logicToAddBackButton];

  2. 获取缺省的后退按钮

-

(UIBarButtonItem*) logicToAddBackButton
        {
            UIImageView *imageView;

            // [imageView setTintColor:[UIColor redColor]];
            UILabel *label=[[UILabel alloc] init];
            if (WHITEBACK) {
                imageView  =[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"UiNavigationBackIPAD"]];
                [label setTextColor:[UIColor whiteColor]];
            }else{ //DEFAULTBACK
                imageView  =[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"UiNavigationBack"]];
                [label setTextColor:[UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0]];

            }

            [label setText:@"Back"];
            [label sizeToFit];

            int space=6;
            label.frame=CGRectMake(imageView.frame.origin.x+imageView.frame.size.width+space,
    label.frame.origin.y, label.frame.size.width,
    label.frame.size.height);
            UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0, label.frame.size.width+imageView.frame.size.width+space,
    imageView.frame.size.height)];

            view.bounds=CGRectMake(view.bounds.origin.x+8, view.bounds.origin.y-1, view.bounds.size.width,
    view.bounds.size.height);


            UIButton *button=[[UIButton alloc] initWithFrame:CGRectMake(view.bounds.origin.x, view.bounds.origin.y,
    view.bounds.size.width, view.bounds.size.height)];
            button.bounds=CGRectMake(view.bounds.origin.x, view.bounds.origin.y, view.bounds.size.width,
    view.bounds.size.height);
            [button addTarget:self action:@selector(eventBack) forControlEvents:UIControlEventTouchUpInside];
            [button addSubview:imageView];
            [button addSubview:label];


            [UIView animateWithDuration:0.33 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
                label.alpha = 0.0;
                CGRect orig=label.frame;
                label.frame=CGRectMake(label.frame.origin.x+25, label.frame.origin.y -5, label.frame.size.width,
    label.frame.size.height+10);
                label.alpha = 1.0;
                label.frame=orig;
            } completion:nil];

            UIBarButtonItem *backButton =[[UIBarButtonItem alloc] initWithCustomView:button];


            return backButton;
        }
  • BACK按钮操作

    (空隙)eventBack {[self.navigationController popViewControllerAnimated:YES]; }

  • UiNavigationBack图片(请改变图像的颜色与大小相同[25X41 144pixels /英寸]需要得到默认的样子)



Answer 10:

什么工作对我来说是这样的:

self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor textPrimaryColor] forKey:NSForegroundColorAttributeName];


文章来源: iPhone Set Tint Color of Back Bar Button Item