18

ナビゲーションコントローラー内の戻るボタンの色合いを設定しようとしていますが、何も機能していません。私が試してみました

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

しかし、それはデフォルトの色合いのままです

4

10 に答える 10

37

barButtonItemは読み取り専用だと思います。(私はこれについてあまりよくわかりません、私が間違っているなら誰かが私を訂正します)

これらのボタンに色合いを与えるために、これは私がすることです:

App Delegateに、次のコード行を追加します。

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

最初の行は外観プロキシを設定しているので、コードを少なくしたい場合は、これも機能すると思います。

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

これがあなたのために働くことを願っています!(これにより、UIBarButtonItemのすべてのインスタンスが変更されます)

于 2012-07-20T17:48:29.907 に答える
32

UINavigationItemの色合いを直接変更することはできません。ナビゲーションバーの色合いを変更する必要があり、バーボタンの色が自動的に変更されます。

これらの行をviewWillAppearメソッドに追加します

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

または、カスタムボタンを作成して、UIBarButtonItemを次のように初期化できます。

UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:yourUIButton];
于 2012-07-20T22:07:58.247 に答える
25

これは私のために働いた。

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

それは2番目の答えと非常に似ています...

于 2014-01-11T14:25:19.863 に答える
4

コードを記述せずにInterfaceBuilderでそれを実行したい場合:

  1. UINavigationBar(UINavigationController内)を選択します

ここに画像の説明を入力してください

  1. 属性インスペクターで「色合い」を見つけます。これが戻るボタンの色を設定します。「バーの色合い」は同じではないことに注意してください。これにより、ナビゲーションバーの背景色が設定されます。

ここに画像の説明を入力してください

leftBarButtonItemを実装すると、スワイプして戻るなどの組み込みの戻るナビゲーションジェスチャが無効になるため、この方法で戻るボタンの外観を設定することが重要です。leftBarButtonItemを実装しようとしないでください。

于 2016-02-26T16:04:14.727 に答える
3

迅速な方法:

ナビゲーション内のすべてのアイテムを変更します。

AppDelegateで、次のようにします。

let navControl = UINavigationBar.appearance()
    navControl.tintColor = UIColor.grayColor()
于 2015-11-10T18:36:04.133 に答える
0

確かに、戻るボタンだけ、またはナビゲーションバーの任意のバーボタンの色を変更することができます。これを行うための小さなスニペットを次に示します。

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

これは、これを行う方法の1つにすぎません。これがお役に立てば幸いです!! その答えはすでに受け入れられていることは知っていますが、適切なスニペットを与えることを考えました。乾杯!!!ハッピーコーディング!!

于 2012-09-20T10:13:40.587 に答える
0

事前定義されたスタイルに設定する場合は、次を使用できます

    [navigationBar setBarStyle: UIBarStyleBlack];
于 2013-05-30T14:56:01.203 に答える
0

次のコードを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]];

これはiOS5以降でサポートされています

于 2013-08-01T07:14:20.533 に答える
0

それはいつも私のために働きます:

  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;
        }
  • バックボタンアクション

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

  • UiNavigationBack Image(デフォルトの外観を得るには、同じサイズ[25X41 144pixels / inch]で必要に応じて画像の色を変更してください) ここに画像の説明を入力してください

于 2014-12-22T13:03:17.787 に答える
0

私のために働いたのはこれでした:

self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor textPrimaryColor] forKey:NSForegroundColorAttributeName];
于 2015-08-03T02:35:58.210 に答える