DoneというタイトルのUIBarButtonItem
にUIToolbar
があります。ここで、フォントをデフォルトから "Trebuchet MS"に太字で変更します。どうやってやるの?
UIBarButtonItemはUIBarItemを継承するため、試すことができます
- (void)setTitleTextAttributes:(NSDictionary *)attributes
forState:(UIControlState)state
ただし、これはiOS5専用です。 iOS 3/4の場合、カスタムビューを使用する必要があります。
正確には、これは以下のように行うことができます
[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)
Swift 3
UIBarButtonItem.appearance().setTitleTextAttributes(
[
NSFontAttributeName : UIFont(name: "HelveticaNeue-Light", size: 12)!,
NSForegroundColorAttributeName : UIColor.white,
], for: .normal)
Swift 4
UIBarButtonItem.appearance().setTitleTextAttributes(
[
NSAttributedStringKey.font : UIFont(name: "HelveticaNeue-Light", size: 12)!,
NSAttributedStringKey.foregroundColor : UIColor.white,
], for: .normal)
または、単一のUIBarButtonItem(アプリ全体ではない)に対して、特に1つのボタンにカスタムフォントがある場合:
Swift 3
let barButtonItem = UIBarButton()
barButtonItem.setTitleTextAttributes([
NSFontAttributeName : UIFont(name: "FontAwesome", size: 26)!,
NSForegroundColorAttributeName : UIColor.white,
], for: .normal)
barButtonItem.title = "\u{f02a}"
Swift 4
let barButtonItem = UIBarButton()
barButtonItem.setTitleTextAttributes([
NSAttributedStringKey.font : UIFont(name: "FontAwesome", size: 26)!,
NSAttributedStringKey.foregroundColor : UIColor.white,
], for: .normal)
barButtonItem.title = "\u{f02a}"
もちろん、フォントとサイズを自由に変更できます。このコードをdidFinishLaunchingWithOptions
セクションのAppDelegate.m
ファイルに配置することを好みます。
利用可能な属性(それらを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];
Swift
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];
Swift 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など)および色を好きなように変更できます。このヘルプを願っています:)
スイフト3
barButtonName.setTitleTextAttributes( [NSFontAttributeName : UIFont.systemFont(ofSize: 18.0),NSForegroundColorAttributeName : UIColor.white], for: .normal)
アプリ全体:
if let font = UIFont(name: "AvenirNext-DemiBold", size: 15) {
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: font,NSForegroundColorAttributeName:TOOLBAR_TITLE_COLOR], forState: UIControlState.Normal)
}
プログラムでカスタムUIView
を作成できます。
UIView *buttonItemView = [[UIView alloc] initWithFrame:buttonFrame];
次に、カスタムビューに画像、ラベルなどを追加します。
[buttonItemView addSubview:customImage];
[buttonItemView addSubview:customLabel];
...
それをUIBarButtomItem
に入れます。
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:buttonItemView];
最後に、ナビゲーションボタンにbarButtonItemを追加します。
UIBarButton
には、フォントの変更に関連するプロパティがありません。ただし、カスタムフォントを使用してボタンを作成し、UIBarButtonに追加できます。それはあなたの問題を解決するかもしれません
IOS4以前をサポートする場合、最善の方法は、initWithCustomView:
メソッドを使用してバーボタンを作成し、フォントを簡単にカスタマイズできるUIButtonのようなビューを提供することです。
プログラムではなくドラッグアンドドロップでボタンを作成する場合は、UIBuilderをInterface Builderのツールバーまたはナビゲーションバーにドラッグすることもできます。
残念ながら、これはボタンの背景画像を自分で作成することを意味します。 iOS5より前の標準UIBarButtonItemのフォントをカスタマイズする方法はありません。
完了のために、このメソッドを追加したいと思います。これは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];