2016-10-12 8 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

Возможный дубликат [Как установить жирный шрифт и курсив на UILabel iPhone/iPad?] (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 -font-size-and-font-name-of-ailabel) – 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! 

Обновление для Swift 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