だから私はナビゲーションバーのタイトルフォントを変更する必要があるこのコードを持っていますが、
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont
fontWithName:_dataManager.optionsSettings.fontString size:14], NSFontAttributeName,
[UIColor whiteColor], NSForegroundColorAttributeName, nil];
[[UINavigationBar appearance] setTitleTextAttributes:attributes];
このコードで戻るボタンのフォントを変更しても問題なく機能します。
//set backbutton font
NSDictionary *normalAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:_dataManager.optionsSettings.fontString size:15], NSFontAttributeName,
nil];
[[UIBarButtonItem appearance] setTitleTextAttributes:normalAttributes
forState:UIControlStateNormal];
タイトルのフォント(および色)を変更する正しい方法は次のとおりです。
[self.navigationController.navigationBar setTitleTextAttributes:
@{NSForegroundColorAttributeName:[UIColor redColor],
NSFontAttributeName:[UIFont fontWithName:@"mplus-1c-regular" size:21]}];
編集:Swift 4.2
self.navigationController?.navigationBar.titleTextAttributes =
[NSAttributedString.Key.foregroundColor: UIColor.red,
NSAttributedString.Key.font: UIFont(name: "mplus-1c-regular", size: 21)!]
編集:Swift 4
self.navigationController?.navigationBar.titleTextAttributes =
[NSAttributedStringKey.foregroundColor: UIColor.red,
NSAttributedStringKey.font: UIFont(name: "mplus-1c-regular", size: 21)!]
Swift 3:
self.navigationController?.navigationBar.titleTextAttributes =
[NSForegroundColorAttributeName: UIColor.redColor(),
NSFontAttributeName: UIFont(name: "mplus-1c-regular", size: 21)!]
他の答えには何の問題もありません。フォントを設定するためのストーリーボードバージョンを共有しています。
(Xcodeが新しいフォントを取得する前に、ナビゲーションバーのバーの色合いを切り替える必要があります)
これがXcode 7.1.1+で機能することを確認しました。 (以下のサンプルを参照してください)
これらのいくつかは繰り返されるため、注目に値する可能性が非常に高いことを意味します。
注〜A 素晴らしいチェックリスト は、ChrisのWebサイトのコードから見つけることができ、サンプルダウンロードプロジェクトを見ることができます。
独自のフォントがあり、それをストーリーボードで使用したい場合は、次の SO Question に適切な回答があります。 1つの答えがこれらの手順を識別します。
そのため、XcodeはUINavigationItemのカスタムフォントを処理できるように見えますが、その機能は適切に更新されません(選択されたフォントは無視されます)。
これを回避するには:
1つの方法は、ストーリーボードを使用してコード行を追加することを修正することです。まず、ViewView ControllerにUIView(UIButton、UILabel、または他のUIViewサブクラス)を追加します(Navigation Itemではありません...それ)。コントロールを追加した後、ストーリーボードのフォントを変更し、参照をView Controllerのアウトレットとして追加できます。そのビューをUINavigationItem.titleViewに割り当てるだけです。必要に応じて、コードでテキスト名を設定することもできます。報告されたバグ(23600285)。
@IBOutlet var customFontTitleView: UIButton!
//Sometime later...
self.navigationItem.titleView = customFontTitleView
これを試して:
NSDictionary *textAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
[UIColor whiteColor],NSForegroundColorAttributeName,
[UIColor whiteColor],NSBackgroundColorAttributeName,nil];
self.navigationController.navigationBar.titleTextAttributes = textAttributes;
ナビゲーションバーのタイトルを変更するための私のSwiftコード:
let attributes = [NSFontAttributeName : UIFont(name: "Roboto-Medium", size: 16)!, NSForegroundColorAttributeName : UIColor.whiteColor()]
self.navigationController.navigationBar.titleTextAttributes = attributes
また、背景フォントも変更したい場合は、AppDelegateにこれがあります。
let attributes = [NSFontAttributeName : UIFont(name: "Roboto-Medium", size: 16)!, NSForegroundColorAttributeName : UIColor.whiteColor()]
UIBarButtonItem.appearance().setTitleTextAttributes(attributes, forState: UIControlState.Normal)
質問に対する答えは次のとおりです。
ビューが読み込まれた後にナビゲーションバーのタイトルが更新されるため、コードを以下のメソッドに移動します。 viewDidLoadで上記のコードを追加しようとしましたが、動作しません。viewDidAppearメソッドで正常に動作します。
-(void)viewDidAppear:(BOOL)animated{}
誰でもSwift 3バージョンが必要です。 redColor()
がred
に変更されました。
self.navigationController?.navigationBar.titleTextAttributes =
[NSForegroundColorAttributeName: UIColor.red,
NSFontAttributeName: UIFont(name: "{your-font-name}", size: 21)!]
迅速:-
self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white, NSAttributedStringKey.font: UIFont(name:"Love Nature", size: 40)!]
プログラムでNavigationItemのタイトルを変更しようとしたときに、ファミリーフォントが見つからなかった(多くのことを試してみましたが、正しく実行することはできませんでした)ため、1つの問題がありました。
最後に、ドキュメントのアウトラインにそのようなものがあるはずです。
そして、あなたのViewControllerでそのようなもの:
それが役立つことを願っています。
リテラルを使用すると、もう少し読みやすくなります。
self.navigationController.navigationBar.titleTextAttributes = @{
NSFontAttributeName:[UIFont fontWithName:@"mplus-1c-regular" size:21],
NSForegroundColorAttributeName: [UIColor whiteColor]
};
アプリのデリゲートにこの1行のコードを追加-Lauchを終了しました。アプリケーション全体でフォント、ナビゲーションバーの色を変更します。
UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white, NSAttributedString.Key.font: UIFont(name: "YOUR FONT NAME", size: 25.0)!]
if (@available(iOS 11.0, *)) {
self.navigationController.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeAlways;
self.navigationController.navigationBar.prefersLargeTitles = true;
// Change Color
self.navigationController.navigationBar.largeTitleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]};
} else {
// Fallback on earlier versions
}
Objective-Cでフォントと色を設定する場合
- (void)_setup {
NSDictionary *barButtonTitleAttributes = @{
NSForegroundColorAttributeName : [UIColor whiteColor],
NSFontAttributeName :[UIFont fontWithName:@"Lato-Regular" size:15.0]
};
[self.navigationBar setTitleTextAttributes:barButtonTitleAttributes];
}
これはSwift 4(@Joshによる回答済み)の代替案です。
let titleTextAttributed: [NSAttributedStringKey: Any] = [.foregroundColor: UIColor.red, .font: UIFont(name: "AvenirNext-Regular", size: 20) as Any]
navigationController?.navigationBar.titleTextAttributes = titleTextAttributed
コンパイルエラーを回避するために、キーのRaw値を追加することを忘れないでください。
let textAttributes:[NSAttributedStringKey: Any] = [NSAttributedStringKey(rawValue: NSAttributedStringKey.foregroundColor.rawValue):UIColor.blue, NSAttributedStringKey(rawValue: NSAttributedStringKey.font.rawValue):UIFont(name:"OpenSans", size: 17)!]
navigationController?.navigationBar.titleTextAttributes = textAttributes
Swift 4の答えは次のとおりですか????:
let textAttributes:[String:Any]? = [NSAttributedStringKey.foregroundColor.rawValue:UIColor.blue, NSAttributedStringKey.font.rawValue:UIFont(name:"Avenir Next", size:20)!]
navigationController?.navigationBar.titleTextAttributes = textAttributes
Swift 4.2
self.navigationController?.navigationBar.titleTextAttributes =
[NSAttributedString.Key.foregroundColor: UIColor.white,
NSAttributedString.Key.font: UIFont(name: "LemonMilklight", size: 21)!]
この拡張機能を追加
extension UINavigationBar {
func changeFont() {
self.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white, NSAttributedStringKey.font: UIFont(name:"Poppins-Medium", size: 17)!]
}
}
ViewDidLoad()に次の行を追加します
self.navigationController?.navigationBar.changeFont()