IOS 11で大きなタイトルの色を設定してフォントを変更する方法を知っていますが、大きなタイトルのデフォルトのフォントとフォントサイズを見つけるのに苦労しています。アプリの他の場所でフォントを再現したいのですが。以下を試してみましたが、フォントやフォントサイズの結果が得られません。他にどこを探したらよいかわからない。
NSLog(@"self.navigationController.navigationBar.largeTitleTextAttributes:%@",self.navigationController.navigationBar.largeTitleTextAttributes);
NSDictionary *dict = self.navigationController.navigationBar.largeTitleTextAttributes;
UIFont *font = [dict objectForKey:@"NSFontAttributeName"];
NSLog(@"font is.. %@, %@, %@",font,font.fontName,font.fontDescriptor);
大きなタイトルのフォントを取得するための適切な解決策は次のとおりです。
Objective-C:
UIFont *font = [UIFont preferredFontForTextStyle: UIFontTextStyleLargeTitle];
NSLog("%@", font);
迅速:
let font = UIFont.preferredFont(forTextStyle: .largeTitle)
print(font)
これにより、ユーザーが設定アプリでさまざまなアクセシビリティとフォントサイズの変更を適用した場合でも、正しい値が得られます。
上記はデフォルトで(遊び場で)以下を出力します:
<UICTFont:0x7fa865c05390> font-family: ".SFUIDisplay"; font-weight:通常;フォントスタイル:通常; font-size:34.00pt
上記のコードでの.largeTitle
の使用は、iOS 11でのみ呼び出す必要があることに注意してください。アプリがiOS 10以前をサポートしている場合は、そのコードを@available
の適切な使用でラップする必要があります。
iOS12 Large Title System Bold 34(サンフランシスコ)
[UIFont boldSystemFontOfSize:34]
iOS9-iOS12 System Semibold 17(サンフランシスコ)
[UIFont systemFontOfSize:17 weight:UIFontWeightSemibold]
iOS8システムセミボールド17(Helvetica Neue)
[UIFont systemFontOfSize:17 weight:UIFontWeightSemibold]
iOS7システムボールド17(Helvetica Neue)
[UIFont boldSystemFontOfSize:17];
このようなものを試してください:
if #available(iOS 11.0, *) { navigationBar.largeTitleTextAttributes = [.foregroundColor: UIColor.white, .font: UIFont(name: "HelveticaNeue-Bold", size: 20)!] }
実際、私はさまざまなフォントとサイズを試して答えを見つけました。免責事項ですが、これはアクセシビリティ/動的フォントサイズによって変わる可能性があります。しかし、私が見つけたフォントとサイズは
[UIFont systemFontOfSize:32 weight:UIFontWeightBold]
私はまだこれをプログラムで取得する方法を見つけたいと思っています。誰かがそれを行う方法を知っていると期待して、答えを受け入れるのを待ちます。それまでの間、これが誰かのお役に立てば幸いです。
IOS 13では、これはナビゲーションバーの大きなタイトルに使用される正確なフォントです。スクリーンショットをピクセル単位で比較したところ、正確に一致しています。
UIFont.systemFont(ofSize: 34, weight: .bold)