Jak zmienić czcionkę UIButton za pomocą Swift


207

Próbuję zmienić czcionkę UIButton za pomocą Swift ...

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

.fontJest to jednak przestarzałe i nie jestem pewien, jak inaczej zmienić czcionkę.

Jakieś sugestie?

Odpowiedzi:


421

Użyj titleLabelzamiast tego. fontNieruchomość jest przestarzałe w iOS 3.0. Nie działa również w Objective-C. titleLabelto etykieta używana do wyświetlania tytułu UIButton.

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

Jednak podczas ustawiania tekstu tytułu należy używać tylko setTitle:forControlState:. Nie używaj titleLabeldo bezpośredniego ustawiania tekstu tytułu.


1
Czy wiecie, dlaczego muszę „rozpakować”? moja etykieta? jak ten ... myButton.titleLabel! .font = ...
DanMoore

ponieważ titleLabeljest to opcjonalna właściwość, ale wcześniej nie była w wersji beta.
koderz

4
Ta metoda pozwoliła mi zmienić nazwę / styl czcionki, ale zmiana właściwości size nie miała znaczenia.
Dave G

7
Nie musisz wymuszać rozpakowywania etykiety. myButton.titleLabel?.font = ...zadziała, ponieważ jeśli titleLabel jest zerowy, będzie to po prostu zakaz
teradyl

1
Dlaczego ta metoda nie działa w przypadku niestandardowej podklasy UIbutton?
Munib

69

W przypadku Swift 3.0 :

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

gdzie „boldSystemFont” i „16” można zastąpić niestandardową czcionką i rozmiarem.


44

Notacja punktowa jest niesamowita (szybkie 4.2) 👌

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

@mahasam UIFont jest wywnioskowany, ta odpowiedź jest taka sama jak inne, ale tylko bez UIFont (ale ponieważ jest ona wywnioskowana przez kompilator, ale jest taka sama) PD: Zawsze staram się pisać w ten sposób, ale po prostu pozwalam ci wiedz, że to samo
Pablo Sanchez Gomez

1
@mahasam: „Zapis punktowy” jest taki sam jak wywnioskowany. I tak Jest to dobry nawyk do adopcji. I nie są to te same odpowiedzi, co inne, ponieważ są bardziej zwięzłe niż inne odpowiedzi. IMO
eonista

9

Nie musisz wymuszać rozpakowywania titleLabel, aby go ustawić.

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

Ponieważ nie używasz tytułu titleLabel, możesz go opcjonalnie użyć, a jeśli jest zero, będzie to po prostu niemożliwe.

Dodam również, jak mówią inni, właściwość czcionki jest przestarzała i upewnij się, że używasz jej setTitle:forControlState:podczas ustawiania tekstu tytułu.



5

Jeśli masz problemy z rozmiarem czcionki (czcionka nie reaguje na zmiany rozmiaru) ...

@codester ma odpowiedni kod:

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

Jednak mój rozmiar czcionki się nie zmieniał. Okazuje się, że pytam o czcionkę, która nie istnieje („HelveticaNeue-Regular”). Nie spowodowało to awarii, ale z tego powodu wydawało się, że po prostu ignoruje tę czcionkę. Gdy zmieniłem czcionkę na coś, co istnieje, renderowano zmiany na „size: x”.


5

możemy używać różnych rodzajów czcionek systemowych, takich jak poniżej

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

i niestandardową czcionkę, jak poniżej

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

4

Powinieneś przejść przez titleLabelnieruchomość.

button.titleLabel.font

Ta fontwłaściwość jest przestarzała od iOS 3.0.


4

Spójrz tutaj .

Zamiast tego należy ustawić czcionkę tytułu titleLabel.

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

4

Działa to w Swift 3.0:

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

4

Jeśli ustawiasz atrybut AttributeString na UIButton, możesz wykonać następujące czynności.

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

4

Jeśli chcesz zmienić tylko rozmiar ( Swift 4.0 ):

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

2

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

  • Jeśli chcesz użyć domyślnej czcionki z własnej rodziny, użyj na przykład: „HelveticaNeue”
  • Jeśli chcesz określić czcionkę rodzinną, użyj na przykład: „HelveticaNeue-Bold”

1

Ten sposób nie działa teraz:

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

To działa:

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

0

ta praca dla mnie, dzięki. Chcę zmienić rozmiar tekstu, a nie zmieniać nazwę czcionki.

var fontSizeButtonBig:Int = 30

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.