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?

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.


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.


44

Dot-notation mengagumkan (cepat 4.2) 👌

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

@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.



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.


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)

4

Anda harus melalui titleLabelproperti.

button.titleLabel.font

The fontproperti telah usang sejak iOS 3.0.


4

Coba lihat di sini .

Anda harus mengatur font titleLabel tombol sebagai gantinya.

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

4

Ini berfungsi di Swift 3.0:

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

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)

4

Jika Anda perlu mengubah ukuran saja ( Swift 4.0 ):

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

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"

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)

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))

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.