Swift ile UIButton yazı tipi nasıl değiştirilir


207

Swift kullanarak bir UIButton yazı tipini değiştirmeye çalışıyorum ...

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

Ancak .fontkullanımdan kaldırıldı ve yazı tipini nasıl değiştireceğimi bilmiyorum.

Baska öneri?

Yanıtlar:


424

titleLabelBunun yerine kullanın . fontMülkiyet iOS 3.0 kaldırılmıştır. Ayrıca Objective-C de çalışmaz. titleLabelüzerinde başlık göstermek için kullanılan etikettir UIButton.

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

Ancak, başlık metnini ayarlarken yalnızca kullanmanız gerekir setTitle:forControlState:. titleLabelDoğrudan başlık için herhangi bir metin ayarlamak için kullanmayın .


1
Neden 'paketini açmam' gerektiğini biliyor musunuz? etiketim ?? bunun gibi ... myButton.titleLabel! .font = ...
DanMoore

beacause titleLabelisteğe bağlı bir özelliktir. Daha önce beta olarak teşekkürler .
Codester

4
Bu yöntem yazı tipimin adını / stilini değiştirmeme izin verdi, ancak size özelliğini değiştirmek hiçbir fark yaratmadı.
Dave G

7
Etiketi açmak için zorlamanıza gerek yok. myButton.titleLabel?.font = ...titleLabel nil ise, sadece bir op-olacak
16:16

1
Neden bu yöntem özel UIbutton alt sınıfı için çalışmıyor?
Munib

69

For Swift 3.0 :

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

burada "boldSystemFont" ve "16" ifadeleri özel yazı tipi ve boyutunuzla değiştirilebilir.


44

Nokta gösterimi harika (hızlı 4.2) 👌

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

@mahasam UIFont çıkarılır, bu cevap diğerleriyle aynıdır, ancak sadece UIFont olmadan (ancak derleyici tarafından çıkarıldığından, ancak aynıdır) PD: Her zaman bu şekilde yazmaya çalışıyorum, ancak sadece aynı olduğunu biliyorum
Pablo Sanchez Gomez

1
@mahasam: "Nokta gösterimi" çıkarımla aynıdır. Ve evet benimsemek iyi bir alışkanlık. Ve diğerleriyle aynı cevaplar değil, diğer cevaplardan daha özlü. IMO
eonist

9

Ayarlamak için titleLabel öğesinin paketini açmaya zorlamanız gerekmez.

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

Burada titleLabel'ı kullanmadığınız için, isteğe bağlı olarak kullanabilirsiniz ve nil ise sadece bir işlem olmayacaktır.

Ayrıca başkalarının söylediği gibi ekleyeceğim, font özelliği kullanımdan kaldırıldı ve setTitle:forControlState:başlık metnini ayarlarken kullandığınızdan emin olun .


7

Gönderen belgeler :

Düğmedeki metni görüntülemek için kullanılan yazı tipi. ( İOS 3.0'da kullanımdan kaldırıldı . Bunun yerine fontözelliğini titleLabelkullanın.)


5

Yazı tipi boyutu sorunları yaşıyorsanız (yazı tipiniz boyut değişikliklerine yanıt vermiyor) ...

@codester doğru koda sahiptir:

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

Ancak, yazı tipi boyutum değişmiyordu. Ortaya çıkmayan bir yazı tipi ("HelveticaNeue-Regular") istediğim ortaya çıktı. Bir çökmeye neden olmuyordu, ancak bu yazı tipi ifadesini nedeniyle görmezden geliyor gibiydi. Yazı tipini var olan bir şeye değiştirdiğimde, "size: x" de yapılan değişiklikler işlendi.


5

aşağıdaki gibi farklı sistem yazı tiplerini kullanabiliriz

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

ve aşağıdaki gibi özel yazı tipiniz

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

4

Mülkten geçmelisin titleLabel.

button.titleLabel.font

fontMülkiyet iOS 3.0 beri kaldırılmıştır.


4

Buraya bir bak .

Bunun yerine düğmenin titleLabel öğesinin yazı tipini ayarlamanız gerekir.

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

4

Swift 3.0'da çalışır:

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

4

AttributedString'i UIButton'a ayarlıyorsanız, aşağıdaki işlemi yapabilirsiniz.

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

4

Yalnızca boyutu değiştirmeniz gerekiyorsa ( Swift 4.0 ):

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

2

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

  • Kendi ailesinden varsayılan yazı tipini kullanmak istiyorsanız, örneğin şunu kullanın: "HelveticaNeue"
  • Aile yazı tipini belirtmek istiyorsanız, örneğin şunu kullanın: "HelveticaNeue-Bold"

1

Bu şekilde artık çalışmıyor:

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

Bu çalışıyor:

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

0

bu iş benim için teşekkürler. Metin boyutunu değiştirmek sadece yazı tipi adını değiştirmek istemiyorum.

var fontSizeButtonBig:Int = 30

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


0

Swift 5'te, nokta gösterimini biraz daha hızlı bir sözdizimi için kullanabilirsiniz:

myButton.titleLabel?.font = .systemFont(ofSize: 14, weight: .medium)

Aksi takdirde şunları kullanırsınız:

myButton.titleLabel?.font = UIFont.systemFont(ofSize: 14, weight: .medium)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.