回答:
正確には、これは以下のように行うことができます
[buttonItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"Helvetica-Bold" size:26.0], NSFontAttributeName,
[UIColor greenColor], NSForegroundColorAttributeName,
nil]
forState:UIControlStateNormal];
または、オブジェクトリテラル構文を使用します。
[buttonItem setTitleTextAttributes:@{
NSFontAttributeName: [UIFont fontWithName:@"Helvetica-Bold" size:26.0],
NSForegroundColorAttributeName: [UIColor greenColor]
} forState:UIControlStateNormal];
便宜上、Swift実装を以下に示します。
buttonItem.setTitleTextAttributes([
NSAttributedStringKey.font: UIFont(name: "Helvetica-Bold", size: 26.0)!,
NSAttributedStringKey.foregroundColor: UIColor.green],
for: .normal)
を使用UIAppearance
しUIBarButtonItem
てアプリ全体でフォントのスタイルを設定することに関心がある場合は、次のコード行を使用して実現できます。
目標C:
NSDictionary *barButtonAppearanceDict = @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Light" size:12.0], NSForegroundColorAttributeName: [UIColor whiteColor]};
[[UIBarButtonItem appearance] setTitleTextAttributes:barButtonAppearanceDict forState:UIControlStateNormal];
Swift 2.3:
UIBarButtonItem.appearance().setTitleTextAttributes(
[
NSFontAttributeName : UIFont(name: "HelveticaNeue-Light", size: 12)!,
NSForegroundColorAttributeName : UIColor.white
],
for: .normal)
スウィフト3
UIBarButtonItem.appearance().setTitleTextAttributes(
[
NSFontAttributeName : UIFont(name: "HelveticaNeue-Light", size: 12)!,
NSForegroundColorAttributeName : UIColor.white,
], for: .normal)
スウィフト4
UIBarButtonItem.appearance().setTitleTextAttributes(
[
NSAttributedStringKey.font : UIFont(name: "HelveticaNeue-Light", size: 12)!,
NSAttributedStringKey.foregroundColor : UIColor.white,
], for: .normal)
または、特に1つのボタンのカスタムフォントがある場合は、単一のUIBarButtonItem(すべてのアプリ全体ではない)の場合:
スウィフト3
let barButtonItem = UIBarButton()
barButtonItem.setTitleTextAttributes([
NSFontAttributeName : UIFont(name: "FontAwesome", size: 26)!,
NSForegroundColorAttributeName : UIColor.white,
], for: .normal)
barButtonItem.title = "\u{f02a}"
スウィフト4
let barButtonItem = UIBarButton()
barButtonItem.setTitleTextAttributes([
NSAttributedStringKey.font : UIFont(name: "FontAwesome", size: 26)!,
NSAttributedStringKey.foregroundColor : UIColor.white,
], for: .normal)
barButtonItem.title = "\u{f02a}"
もちろん、フォントとサイズを好きなように変更できます。セクションのAppDelegate.m
ファイルにこのコードを配置することを好みますdidFinishLaunchingWithOptions
。
利用可能な属性(それらをに追加するだけNSDictionary
):
NSFontAttributeName
:でフォントを変更 UIFont
NSForegroundColorAttributeName
:で色を変える UIColor
NSShadow
:ドロップシャドウを追加します(NSShadow
クラスリファレンスを参照)(iOS7以降で更新)
Swiftではこれを次のように行います:
backButtonItem.setTitleTextAttributes([
NSFontAttributeName : UIFont(name: "Helvetica-Bold", size: 26)!,
NSForegroundColorAttributeName : UIColor.blackColor()],
forState: UIControlState.Normal)
これらは上記の素晴らしい答えです。iOS7向けに更新する:
NSDictionary *barButtonAppearanceDict = @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Thin" size:18.0] , NSForegroundColorAttributeName: [UIColor whiteColor]};
[[UIBarButtonItem appearance] setTitleTextAttributes:barButtonAppearanceDict forState:UIControlStateNormal];
Swift3
buttonName.setAttributedTitle([
NSFontAttributeName : UIFont.systemFontOfSize(18.0),
NSForegroundColorAttributeName : UIColor.red,NSBackgroundColorAttributeName:UIColor.black],
forState: UIControlState.Normal)
迅速
barbutton.setTitleTextAttributes([
NSFontAttributeName : UIFont.systemFontOfSize(18.0),
NSForegroundColorAttributeName : UIColor.redColor(),NSBackgroundColorAttributeName:UIColor.blackColor()],
forState: UIControlState.Normal)
Objective-C
[ barbutton setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"Helvetica-Bold" size:20.0], NSFontAttributeName,
[UIColor redColor], NSForegroundColorAttributeName,[UIColor blackColor],NSBackgroundColorAttributeName,
nil]
forState:UIControlStateNormal];
UIBarButtonItems
すべてではなく一部に対してこれを行うには、次の方法をお勧めします。
UIBarButtonItem
サブクラスを作成します。何も追加しないでください-ストーリーボード内の外観クラスとその外観プロキシとしてのみ使用します...UIBarButtonItems
サブクラスに変更します。UIBarButtonItem
サブクラスをインポートし、次の行を追加しますapplication:didFinishLaunchingWithOptions:
私の場合UIBarButtonItem
、テキストを太字にすることだけを目的としてサブクラス化しました。
[[BoldBarButtonItem appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont boldSystemFontOfSize:18.0], NSFontAttributeName,nil]
forState:UIControlStateNormal];
でスウィフト4、あなたはのフォントや色を変更することができUIBarButtonItem
、次のコードを追加して。
addTodoBarButton.setTitleTextAttributes(
[
NSAttributedStringKey.font: UIFont(name: "HelveticaNeue-Bold", size: 17)!,
NSAttributedStringKey.foregroundColor: UIColor.black
], for: .normal)
これは正しい方法です。barButtonItem(この場合はrightBarButtonItem)を宣言し、setTitleTextAttributesに追加します。
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Go!", style: .plain, target: self, action: #selector(yourFuncDestination))
タイトル属性を追加した後
navigationItem.rightBarButtonItem?.setTitleTextAttributes([.font : UIFont.systemFont(ofSize: 18, weight: .bold), .foregroundColor : UIColor.white], for: .normal)
サイズ、重さ(.bold、.heavy、.regularなど)と色を好きなように変更できます。
アプリ全体:
if let font = UIFont(name: "AvenirNext-DemiBold", size: 15) {
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: font,NSForegroundColorAttributeName:TOOLBAR_TITLE_COLOR], forState: UIControlState.Normal)
}
iOS4以前をサポートする場合は、initWithCustomView:
メソッドを使用してバーボタンを作成し、フォントを簡単にカスタマイズできるUIButtonのような独自のビューを提供するのが最善の策です。
プログラムではなくドラッグアンドドロップでボタンを作成する場合は、Interface BuilderのツールバーまたはナビゲーションバーにUIButtonをドラッグすることもできます。
残念ながら、これはボタンの背景画像を自分で作成することを意味します。iOS5より前の標準のUIBarButtonItemのフォントをカスタマイズする方法はありません。
UIView
プログラムでカスタムを作成できます。
UIView *buttonItemView = [[UIView alloc] initWithFrame:buttonFrame];
次に、画像、ラベル、または好きなものをカスタムビューに追加します。
[buttonItemView addSubview:customImage];
[buttonItemView addSubview:customLabel];
...
今それをあなたの中に入れてくださいUIBarButtomItem
。
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:buttonItemView];
最後に、ナビゲーションボタンにbarButtonItemを追加します。
完成させるために、私はこのメソッドを追加したいと思います。2019年もObjective-Cで使用されています。:)
_titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
_titleLabel.text = _titleBarButtonItem.title;
_titleLabel.textColor = UIColor.whiteColor;
_titleLabel.font = [UtilityMethods appFontProDisplayBold:26.0];
[_titleLabel sizeToFit];
UIBarButtonItem *titleLabelItem = [[UIBarButtonItem alloc] initWithCustomView:_titleLabel];