web-dev-qa-db-ja.com

ナビゲーションバーのフォントを変更する

質問は単純で簡単で、残念ながら答えはありません。

UINavigationBarのテキストのフォントを変更するにはどうすればよいですか?

64
Joetjah

iOS 7以降:

NSShadow* shadow = [NSShadow new];
shadow.shadowOffset = CGSizeMake(0.0f, 1.0f);
shadow.shadowColor = [UIColor redColor];
[[UINavigationBar appearance] setTitleTextAttributes: @{
     NSForegroundColorAttributeName: [UIColor greenColor],
                NSFontAttributeName: [UIFont fontWithName:@"Helvetica" size:20.0f],
              NSShadowAttributeName: shadow
                                                      }];

iOS 5以降:

 [[UINavigationBar appearance] setTitleTextAttributes: @{
                                UITextAttributeTextColor: [UIColor greenColor],
                          UITextAttributeTextShadowColor: [UIColor redColor],
                         UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)],
                                     UITextAttributeFont: [UIFont fontWithName:@"Helvetica" size:20.0f]
     }];

iOS 5より前:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 400, 44)];
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:20.0];
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
label.textAlignment = UITextAlignmentCenter;
label.textColor =[UIColor whiteColor];
label.text=self.title;  
self.navigationItem.titleView = label;      
[label release];
158
Aravindhan

Interface Builder自体で(コードなしで)フォントを変更したい場合は、Xcode6でフォントを変更する方法を次に示します。

1.)Navigation Controllerシーンの下のNavigation Barビューを見つけます enter image description here

2.)属性インスペクターでタイトルのフォント、色、影の属性を変更します。 enter image description here

15
inder

IOS 7用に更新:

[[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:
                                                      [UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], NSForegroundColorAttributeName,
                                                      shadow, NSShadowAttributeName,
                                                      [UIFont fontWithName:@"HelveticaNeue-CondensedBlack" size:21.0], NSFontAttributeName, nil]];

礼儀:

http://www.appcoda.com/customize-navigation-status-bar-ios-7/

5
AbuZubair

上記の答えは機能します。最後の行の前に次の行を追加します。そうしないと、左側に戻るボタンはあるが右側のボタンがない場合、ラベルは中央に正しく配置されていないようです。

...
[self.navigationItem.titleView sizeToFit]; 
[label release]; // not needed if you are using ARC
5
Raj Lalwani

すべての回答に影が含まれている理由がわかりません。影を操作する線を追加しても、テキストのフォントの変更に関しては何もしません。これらの2行のコードはiOS 8.4およびSwiftで動作します

let attributesDictionary = [NSFontAttributeName: UIFont(name: "Helvetica Neue", size: 14)!]
navigationController!.navigationBar.titleTextAttributes = attributesDictionary

titleTextAttributesは、ナビゲーションバーのタイトルのフォント、色、サイズ、およびその他の属性を指示する辞書を格納します。

4
Kelvin Lau

IOS 5以降、外観プロキシを使用できます。

答えはこの質問の複製です: https://stackoverflow.com/a/12364740/88341

1
Ric Santos
     NSShadow *shadow = [NSShadow new];
[shadow setShadowColor: [UIColor clearColor]];
[shadow setShadowOffset: CGSizeMake(0.0f, 1.0f)];

[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                         [UIFont fontWithName:@"TimeBurner" size:27.0f], NSFontAttributeName,
                                         [UIColor whiteColor], NSForegroundColorAttributeName,
                                         shadow, NSShadowAttributeName,nil]];
1
Vin