173

戻るボタンの矢印を変更しようとしています

ここに画像の説明を入力

現在、次を使用して、テキストのサイズと戻るボタンのテキストの色を制御しています。

[[UIBarButtonItem appearance] setTitleTextAttributes:
  [NSDictionary dictionaryWithObjectsAndKeys:
    [UIColor whiteColor], UITextAttributeTextColor,
    [UIFont boldSystemFontOfSize:16.0f], UITextAttributeFont,
    [UIColor darkGrayColor], UITextAttributeTextShadowColor,
    [NSValue valueWithCGSize:CGSizeMake(0.0, -1.0)], UITextAttributeTextShadowOffset,
  nil] forState:UIControlStateNormal];

しかし、戻るボタンの矢印の色だけを変更したい場合はどうすればよいですか?

4

17 に答える 17

439

特定のナビゲーション コントローラーの戻るボタンのシェブロンの色を変更するには*:

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

*複数のナビゲーション コントローラーを備えたアプリを使用していて、このシェブロンの色をそれぞれに適用する場合は、次のように、外観プロキシを使用してすべてのナビゲーション コントローラーに戻るボタンのシェブロンを設定することができます。

[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

そして、おまけに、迅速に (コメントの Jay Mayu に感謝します):

UINavigationBar.appearance().tintColor = UIColor.whiteColor()
于 2013-09-15T06:08:09.783 に答える
55

メソッドを使用して、アプリ ナビゲーション バー全体の色を設定できます。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
(NSDictionary *)launchOptions{
    [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
}
于 2013-09-18T22:53:30.483 に答える
23

この方法で矢印の色のみを変更することができます (戻るボタンのタイトルの色ではありません):

[[self.navigationController.navigationBar.subviews lastObject] setTintColor:[UIColor blackColor]];

ナビゲーション バーには、矢印を表す _UINavigationBarBackIndicatorView タイプ (subviews 配列の最後の項目) のサブビューが含まれます。

結果は、戻るボタンの矢印と戻るボタンのタイトルの色が異なるナビゲーション バーです。

于 2013-09-19T11:08:32.067 に答える
22

ストーリーボードを使用している場合は、ナビゲーション バーの色合いを設定できます。

ここに画像の説明を入力

ここに画像の説明を入力

于 2015-07-27T05:28:44.670 に答える
11

navigationController を初期化する rootViewController 内で、このコードを viewDidAppear メソッド内に配置します。

//set back button color
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAttributeTextColor,nil] forState:UIControlStateNormal];
//set back button arrow color
[self.navigationController.navigationBar setTintColor:[UIColor whiteColor]];
于 2013-10-03T13:49:26.240 に答える
7

iOS 6 では、tintColor によって、ナビゲーション バー、タブ バー、ツールバー、検索バー、およびスコープ バーの背景が着色されました。iOS 7 でバーの背景に色合いを付けるには、代わりに barTintColor プロパティを使用します。

iOS 7 デザイン リソース iOS 7 UI 移行ガイド

于 2013-09-10T09:31:45.313 に答える
6

tintColorボタン (またはバー ボタン アイテム) またはビュー コントローラーのビューでプロパティを設定できます。デフォルトでは、プロパティはUIWindowアプリのトップ レベルまで親ビューから色合いを継承します。

于 2013-08-22T15:22:34.797 に答える
5

両方を使用する必要がありました:

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] 
                     setTitleTextAttributes:[NSDictionary 
               dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAttributeTextColor,nil] 
                                   forState:UIControlStateNormal];

[[self.navigationController.navigationBar.subviews lastObject] setTintColor:[UIColor whiteColor]];

そして私のために働きます、みんなありがとう!

于 2013-11-14T11:33:52.473 に答える
3

アプリ全体で戻る矢印だけを変更したい場合は、次のようにします。

[[NSClassFromString(@"_UINavigationBarBackIndicatorView") appearance] 
  setTintColor:[UIColor colorWithHexString: @"#f00000"]];
于 2014-09-24T12:11:42.983 に答える
3

色を変更するだけで、NavigationBar以下のように色合いを設定できます。

[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
于 2013-10-24T03:45:43.193 に答える
3

矢印のイメージを持つ UIButton に基づいてカスタムの戻るボタンを作成する場合は、サブクラスのスニペットを次に示します。それを使用すると、コードでボタンを作成するか、Interface Builder でクラスを任意の UIButton に割り当てることができます。戻る矢印の画像が自動的に追加され、テキストの色で色付けされます。

@interface UIImage (TintColor)

- (UIImage *)imageWithOverlayColor:(UIColor *)color;

@end


@implementation UIImage (TintColor)

- (UIImage *)imageWithOverlayColor:(UIColor *)color
{
    CGRect rect = CGRectMake(0.0f, 0.0f, self.size.width, self.size.height);

    if (UIGraphicsBeginImageContextWithOptions) {
        CGFloat imageScale = 1.0f;
        if ([self respondsToSelector:@selector(scale)])
            imageScale = self.scale;
        UIGraphicsBeginImageContextWithOptions(self.size, NO, imageScale);
    }
    else {
        UIGraphicsBeginImageContext(self.size);
    }

    [self drawInRect:rect];

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetBlendMode(context, kCGBlendModeSourceIn);

    CGContextSetFillColorWithColor(context, color.CGColor);
    CGContextFillRect(context, rect);

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;
}

@end




#import "iOS7backButton.h"

@implementation iOS7BackButton

-(void)awakeFromNib
{
    [super awakeFromNib];

    BOOL is6=([[[UIDevice currentDevice] systemVersion] floatValue] <7);
    UIImage *backBtnImage = [[UIImage imageNamed:@"backArrow"] imageWithOverlayColor:self.titleLabel.textColor];
    [self setImage:backBtnImage forState:UIControlStateNormal];
    [self setTitleEdgeInsets:UIEdgeInsetsMake(0, 5, 0, 0)];
    [self setImageEdgeInsets:UIEdgeInsetsMake(0, is6?0:-10, 0, 0)];


}


+ (UIButton*) buttonWithTitle:(NSString*)btnTitle andTintColor:(UIColor*)color {
    BOOL is6=([[[UIDevice currentDevice] systemVersion] floatValue] <7);
    UIButton *backBtn=[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 60, 30)];
    UIImage *backBtnImage = [[UIImage imageNamed:@"backArrow"] imageWithOverlayColor:color];
    [backBtn setImage:backBtnImage forState:UIControlStateNormal];
    [backBtn setTitleEdgeInsets:UIEdgeInsetsMake(0, is6?5:-5, 0, 0)];
    [backBtn setImageEdgeInsets:UIEdgeInsetsMake(0, is6?0:-10, 0, 0)];
    [backBtn setTitle:btnTitle forState:UIControlStateNormal];
    [backBtn setTitleColor:color /*#007aff*/ forState:UIControlStateNormal];

    return backBtn;
}

@end

戻るボタンの画像@2x

于 2014-08-18T10:22:48.590 に答える
2

iOS 7 では、次のコード行をファイル内application:didFinishLaunchingWithOptions:に配置できます。AppDelegate.m

[[UINavigationBar appearance] setTintColor:myColor];

myColorアプリ全体で戻るボタンの色を設定します。すべてのファイルに入れる必要はありません。

于 2014-02-18T14:11:32.520 に答える
0

Swift 2.0:ナビゲーション バーとボタンのカラーリング

navigationController?.navigationBar.barTintColor = UIColor.blueColor()
navigationController?.navigationBar.tintColor = UIColor.whiteColor()
navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
于 2016-03-22T18:02:51.380 に答える
0

In swift 3 , to change UIBarButton back button arrow color

self.navigationController?.navigationBar.tintColor = UIColor.black
于 2017-05-31T06:07:14.640 に答える