2016-10-12 30 views
8

Mam programowo UILabel utworzone. Chciałbym, aby tekst etykiety był pogrubiony bez określania rozmiaru czcionki. Do tej pory tylko znalazłem:Swift: Programowo uczynić UILabel pogrubionym bez zmiany jego rozmiaru?

UIFont.boldSystemFont(ofSize: CGFloat) 

To jest dokładnie to, co mam:

let titleLabel = UILabel() 
let fontSize: CGFloat = 26 
titleLabel.font = UIFont.boldSystemFont(ofSize: titleLabelFontSize) 

Ale w ten sposób ja również ustawienie rozmiaru. Chciałbym tego uniknąć. Czy istnieje sposób?

Jeśli nie ma sposobu, co byłoby dobrym rozwiązaniem w Swift?

Dziękujemy!

+0

Coś w tym stylu: 'titleLabel.font = UIFont.boldSystemFont (ofSize: titleLabel.font.pointSize)'? – Larme

+0

Możliwy duplikat [Jak ustawić pogrubienie i kursywę na UILabel na iPhonie/iPadzie?] (Http://stackoverflow.com/questions/4713236/how-do-i-set-bold-anditali-on-uilabel -of-iphone-ipad) –

+0

Może to pomóc: [Jak mogę uzyskać rozmiar czcionki i nazwę czcionki UILabel?] (http://stackoverflow.com/questions/4866138/how-can-i-get-the -font-size-and-font-name-of-a-uilabel) – ozgur

Odpowiedz

17

Dlaczego nie po prostu:

titleLabel.font = UIFont.boldSystemFont(ofSize: titleLabel.font.pointSize) 
+0

Dzięki! Pracował świetnie! – user1269290

+0

Dzięki działa dla mnie. –

5

po prostu sprawiają, że czcionki pogrubione bez zmieniania rozmiaru czcionki można utworzyć rozszerzenia takiego (który jest oparty off odpowiedź here:

extension UIFont { 

    func withTraits(traits:UIFontDescriptorSymbolicTraits...) -> UIFont { 
     let descriptor = self.fontDescriptor() 
     .fontDescriptorWithSymbolicTraits(UIFontDescriptorSymbolicTraits(traits)) 
     return UIFont(descriptor: descriptor, size: 0) 
    } 

    func bold() -> UIFont { 
     return withTraits(.TraitBold) 
    } 

} 

Tak w ten sposób można go użyć w następujący sposób:

let titleLabel = UILabel() 
titleLabel.font = titleLabel.font.bold() //no need to include size! 

Aktualizacja Swift 4 składnią:

extension UIFont { 

    func withTraits(traits:UIFontDescriptorSymbolicTraits...) -> UIFont { 
     let descriptor = self.fontDescriptor    
      .withSymbolicTraits(UIFontDescriptorSymbolicTraits(traits)) 
     return UIFont(descriptor: descriptor!, size: 0) 
    } 

    func bold() -> UIFont { 
     return withTraits(traits: .traitBold) 
    } 
} 
+2

Dziękujemy! Poszedłem z inną odpowiedzią, ale nauczyłem się z twojego postu. – user1269290