2016-10-12 456 views
8

我有一個以編程方式創建的UILabel。我想在不指定字體大小的情況下使標籤的文字變爲粗體。到目前爲止,我只找到:Swift:以編程方式使UILabel加粗而不改變其大小?

UIFont.boldSystemFont(ofSize: CGFloat) 

這是我有完全相同:

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

不過這樣一來,我還設置大小。我想避免這種情況。有沒有辦法?

如果沒有辦法,Swift中的解決方法是什麼?

謝謝!

+0

類似的東西:'titleLabel.font = UIFont.boldSystemFont(ofSize:titleLabel.font.pointSize)'? – Larme

+0

[我如何在iPhone/iPad的UILabel上設置粗體和斜體?](http://stackoverflow.com/questions/4713236/how-do-i-set-bold-and-italic-on-uilabel -of-iphone-ipad) –

+0

這可能有助於:[我如何獲得UILabel的字體大小和字體名稱?](http://stackoverflow.com/questions/4866138/how-can-i-get-the -ont-size-and-font-name-of-a-uilabel) – ozgur

回答

17

爲什麼不乾脆:

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

謝謝!工作很棒! – user1269290

+0

謝謝爲我工作。 –

5

爲了只是使字體加粗,而不改變字體大小,你可以創建一個這樣的擴展(這是基於關閉答案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) 
    } 

} 

所以這樣你可以像這樣使用它:

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

更新夫特4語法:

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

謝謝!我用一個不同的答案去了,但是我從你的帖子中學到了。 – user1269290

相關問題