SwiftでUIButtonのフォントを変更する方法


207

Swiftを使用してUIButtonのフォントを変更しようとしています...

myButton.font = UIFont(name: "...", 10)

ただし.font、非推奨であり、フォントを変更する方法がわからない。

助言がありますか?

回答:


421

titleLabel代わりに使用してください。このfontプロパティはiOS 3.0では非推奨です。また、Objective-Cでは機能しません。titleLabelにタイトルを表示するために使用されるラベルUIButtonです。

myButton.titleLabel?.font =  UIFont(name: YourfontName, size: 20)

ただし、タイトルテキストを設定するときは、のみを使用する必要がありますsetTitle:forControlState:titleLabelタイトルのテキストを直接設定するために使用しないでください。


1
なぜ私が「アンラップ」しなければならないのか知っていますか?私のレーベル?このように... myButton.titleLabel!.font = ...
DanMoore

beacause titleLabelはオプションのプロパティです。以前はベータ版でしたので、ありませんでした。
コードスター、2014

4
この方法でフォント名/スタイルを変更できましたが、サイズプロパティを変更しても違いはありませんでした。
Dave G

7
ラベルを強制的に展開する必要はありません。myButton.titleLabel?.font = ...titleLabelがnilの場合は動作しないため、機能します
teradyl 2016年

1
このメソッドがカスタムUIbuttonサブクラスで機能しないのはなぜですか?
Munib

69

スウィフト3.0

button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 16)

「boldSystemFont」と「16」は、カスタムフォントとサイズに置き換えることができます。


44

ドット表記は素晴らしい(swift 4.2)👌

btn.titleLabel?.font = .systemFont(ofSize: 12)

@mahasam UIFontが推測されます。この答えは他のものと同じですが、UIFontがないだけです(ただし、コンパイラーによって推測されるためですが、同じです)PD:私は常にこのように記述しようとしますが、同じことを知ってください
パブロ・サンチェス・ゴメス

1
@mahasam:「ドット表記」は推論されたものと同じです。そしてはいそれを採用するのは良い習慣です。また、他の回答よりも簡潔であるため、他の回答と同じではありません。IMO
Eonist '19年

9

タイトルラベルを設定するために強制的にアンラップする必要はありません。

myButton.titleLabel?.font = UIFont(name: YourfontName, size: 20)

ここではtitleLabelを使用していないため、オプションでそれを使用でき、nilの場合は何もしません。

他の人が言っているように、私はまた追加します、fontプロパティは非推奨でありsetTitle:forControlState:、タイトルテキストを設定するときに使用することを確認してください。


7

ドキュメントから:

ボタンにテキストを表示するために使用されるフォント。(iOS 3.0では非推奨。代わりにのfontプロパティを使用してくださいtitleLabel。)


5

フォントサイズの問題がある場合(フォントがサイズ変更に応答しない場合)...

@codesterには正しいコードがあります:

myButton.titleLabel!.font =  UIFont(name: YourfontName, size: 20)

しかし、フォントサイズは変わりませんでした。実在しないフォント( "HelveticaNeue-Regular")を求めていることがわかりました。クラッシュの原因ではありませんでしたが、そのためにそのフォントステートメントを無視しているように見えました。フォントを既存のものに変更すると、「サイズ:x」を変更してもレンダリングされました。


5

以下のようなさまざまなタイプのシステムフォントを使用できます

myButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: 17)
myButton.titleLabel?.font = UIFont.italicSystemFont(ofSize:UIFont.smallSystemFontSize)
myButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: UIFont.buttonFontSize)

以下のようなカスタムフォント

    myButton.titleLabel?.font = UIFont(name: "Helvetica", size:12)

4

titleLabelプロパティを通過する必要があります。

button.titleLabel.font

このfontプロパティはiOS 3.0以降廃止されています。



4

これはSwift 3.0で機能します。

btn.titleLabel?.font = UIFont(name:"Times New Roman", size: 20) 

4

AttributedStringをUIButtonに設定する場合は、次のことを実行できます。

let attributedText = NSAttributedString(string: "Hello", attributes: [NSAttributedStringKey.font: UIFont(name: "Calibri", size: 19)])
okayButton.setAttributedTitle(attributedText, for: .normal)

4

サイズのみを変更する必要がある場合(Swift 4.0):

button.titleLabel?.font = button.titleLabel?.font.withSize(12)

2

例: button.titleLabel?.font = UIFont(name: "HelveticaNeue-Bold", size: 12)

  • 独自のファミリのデフォルトフォントを使用する場合は、たとえば「HelveticaNeue」を使用します。
  • ファミリーフォントを指定する場合は、たとえば「HelveticaNeue-Bold」を使用します。

1

この方法は現在機能しません:

 btn.titleLabel?.font = UIFont(name: "Helvetica", size:12)

これは機能します:

 btn.titleLabel?.font = UIFont.init(name: "Helvetica", size:12)

0

この仕事は私に感謝します。フォント名を変えずにテキストサイズを変えたい。

var fontSizeButtonBig:Int = 30

btnMenu9.titleLabel?.font = .systemFont(ofSize:CGFloat(fontSizeButtonBig))

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.