Bagaimana mengubah font UIButton dengan Swift

207

Saya mencoba mengubah font UIButton menggunakan Swift ...

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

Namun .fontsudah usang dan saya tidak yakin bagaimana cara mengubah font sebaliknya.

Ada saran?

Stephen Fox
sumber

Jawaban:

421

Gunakan titleLabelsebagai gantinya. The fontproperti usang dalam iOS 3.0. Ini juga tidak berfungsi di Objective-C. titleLabeladalah label yang digunakan untuk menampilkan judul UIButton.

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

Namun, saat mengatur teks judul Anda hanya harus menggunakan setTitle:forControlState:. Jangan gunakan titleLabeluntuk mengatur teks untuk judul secara langsung.

codester
sumber
1
Apakah kalian tahu mengapa saya harus 'membuka'? label saya ?? seperti ini ... myButton.titleLabel! .font = ...
DanMoore
beacause titleLabeladalah properti opsional. Terima kasih sebelumnya dalam versi beta, bukan.
codester
4
Metode ini memungkinkan saya untuk mengubah nama font / gaya saya, tetapi mengubah ukuran properti tidak membuat perbedaan.
Dave G
7
Anda tidak perlu memaksakan membuka labelnya. myButton.titleLabel?.font = ...akan bekerja karena jika titleLabel tidak ada, itu hanya akan menjadi no-op
teradyl
1
Mengapa metode ini tidak berfungsi untuk subkelas tombol UI khusus?
Munib
69

Untuk Swift 3.0 :

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

di mana "boldSystemFont" dan "16" dapat diganti dengan font dan ukuran khusus Anda.

ruthless_g
sumber
44

Dot-notation mengagumkan (cepat 4.2) 👌

btn.titleLabel?.font = .systemFont(ofSize: 12)
eonist
sumber
@mahasam UIFont disimpulkan, jawaban ini sama dengan yang lain tetapi hanya tanpa UIFont (tetapi karena disimpulkan oleh kompiler, tetapi itu sama) PD: Saya selalu mencoba menulis dengan cara ini, tetapi hanya untuk membiarkan Anda tahu itu sama
Pablo Sanchez Gomez
1
@mahasam: "Dot-notation" sama dengan yang disimpulkan. Dan ya. Itu kebiasaan yang baik untuk diadopsi. Dan itu bukan jawaban yang sama dengan yang lain karena lebih ringkas daripada jawaban lainnya. IMO
eonist
9

Anda tidak perlu memaksa membuka titleLabel untuk mengaturnya.

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

Karena Anda tidak menggunakan titleLabel di sini, Anda dapat menggunakannya secara opsional dan jika tidak ada, itu hanya akan menjadi larangan.

Saya juga akan menambahkan seperti kata orang lain, properti font sudah usang, dan pastikan untuk digunakan setTitle:forControlState:saat mengatur teks judul.

teradyl
sumber
7

Dari dokumentasi :

Font yang digunakan untuk menampilkan teks pada tombol. ( Sudah usang di iOS 3.0 . Gunakan fontproperti dari titleLabelgantinya.)

zneak
sumber
5

Jika Anda mengalami masalah ukuran font (font Anda tidak merespons perubahan ukuran) ...

@codester memiliki kode yang benar:

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

Namun, ukuran font saya tidak berubah. Ternyata saya meminta font yang tidak ada ("HelveticaNeue-Regular"). Itu tidak menyebabkan crash, tetapi tampaknya hanya mengabaikan pernyataan font karena itu. Setelah saya mengubah font menjadi sesuatu yang ada, perubahan ke "size: x" benar-benar render.

Dave G
sumber
5

kita dapat menggunakan berbagai jenis font sistem seperti di bawah ini

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

dan font khusus Anda seperti di bawah ini

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

Anda harus melalui titleLabelproperti.

button.titleLabel.font

The fontproperti telah usang sejak iOS 3.0.

Chris Wagner
sumber
4

Coba lihat di sini .

Anda harus mengatur font titleLabel tombol sebagai gantinya.

myButton.titleLabel!.font = UIFont(name: "...", 10)
Connor
sumber
4

Ini berfungsi di Swift 3.0:

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

Jika Anda mengatur AttributedString ke UIButton maka Anda dapat melakukan hal di bawah ini.

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

Jika Anda perlu mengubah ukuran saja ( Swift 4.0 ):

button.titleLabel?.font = button.titleLabel?.font.withSize(12)
Karbaman
sumber
2

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

  • Jika Anda ingin menggunakan font defaul dari keluarga sendiri, gunakan misalnya: "HelveticaNeue"
  • Jika Anda ingin menentukan font keluarga, gunakan misalnya: "HelveticaNeue-Bold"
janaz
sumber
1

Cara ini tidak berfungsi sekarang:

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

Ini bekerja:

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

ini bekerja untuk saya, terima kasih. Saya ingin mengubah ukuran teks saja tidak mengubah nama font.

var fontSizeButtonBig:Int = 30

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

mahasam
sumber