web-dev-qa-db-ja.com

iOS 7 UIBarButton戻るボタンの矢印の色

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

enter image description here

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

[[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];

しかし、戻るボタンの矢印の色だけを変えたいのなら、どうすればいいですか。

172
kevinl

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

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

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

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

それに、Swiftでは、(良い点として、Jay Mayuのコメントに感謝します)

UINavigationBar.appearance().tintColor = UIColor.whiteColor()
438
DiscDev

アプリ全体のtintColorを設定する必要があります。

self.window.tintColor = [UIColor redColor];

またはSwift 3では:

self.window?.tintColor = UIColor.blue

出典: iOS 7 UI移行ガイド

57
Bart van Kuik

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

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
(NSDictionary *)launchOptions{
    [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
}
55
David Castro

このようにして、矢印の色だけを変更することができます。

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

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

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

23
selmad

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

enter image description here

enter image description here

22
ThE uSeFuL

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]];
11
John Riselvato

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

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

7
Chamath Jeevan

ボタン(またはバーボタン項目)またはView ControllerのビューにtintColorプロパティを設定できます。デフォルトでは、プロパティは親ビューからティントを継承します。これは、アプリケーションの最上位レベルのUIWindowまでです。

6
Mike Weller
UINavigationBar *nbar = self.navigationController.navigationBar;

if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
   //iOS 7
   nbar.barTintColor = [UIColor blueColor]; // bar color
   //or custom color 
   //[UIColor colorWithRed:19.0/255.0 green:86.0/255.0 blue:138.0/255.0 alpha:1];

   nbar.navigationBar.translucent = NO;

   nbar.tintColor = [UIColor blueColor]; //bar button item color

} else {
   //ios 4,5,6
   nbar.tintColor = [UIColor whiteColor];
   //or custom color
   //[UIColor colorWithRed:19.0/255.0 green:86.0/255.0 blue:138.0/255.0 alpha:1];

}
5
Salim

私は両方を使わなければなりませんでした:

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

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

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

5
Márcia Silva

あなたが全体のアプリで戻る矢印BUTだけを変更したいならば、これをしてください:

[[NSClassFromString(@"_UINavigationBarBackIndicatorView") appearance] 
  setTintColor:[UIColor colorWithHexString: @"#f00000"]];
3
orkenstein

Swift 3をアップデートします

navigationController?.navigationItem.rightBarButtonItem?.tintColor = UIColor.yellow
navigationController?.navigationBar.tintColor = UIColor.red
navigationController?.navigationBar.barTintColor = UIColor.gray
navigationController?.navigationBar.titleTextAttributes =  [NSForegroundColorAttributeName: UIColor.blue]

結果は enter image description here

3
Ricardo Mutti

NavigationBarの色を変えるためだけに、以下のように色合いを設定することができます。

[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
3
Khash Nejad

あなたが矢印の画像で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

back button image@2x

3

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

[[UINavigationBar appearance] setTintColor:myColor];

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

2
Geo1088

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

navigationController?.navigationBar.barTintColor = UIColor.blueColor()
navigationController?.navigationBar.tintColor = UIColor.whiteColor()
navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
0
chinnuabhi

Swift 3では、UIBarButtonの戻るボタンの矢印の色を変更する

self.navigationController?.navigationBar.tintColor = UIColor.black
0
Dilip Jangid