Swift:以编程方式使UILabel加粗而不更改其大小?

Swift:以编程方式使UILabel加粗而不更改其大小?,swift,uilabel,bold,Swift,Uilabel,Bold,我有一个通过编程创建的UILabel。我想在不指定字体大小的情况下将标签文本加粗。到目前为止,我只发现: UIFont.boldSystemFont(ofSize: CGFloat) 这正是我所拥有的: let titleLabel = UILabel() let fontSize: CGFloat = 26 titleLabel.font = UIFont.boldSystemFont(ofSize: titleLabelFontSize) 但这样我也可以设定尺寸。我想避免这种情况。有办

我有一个通过编程创建的UILabel。我想在不指定字体大小的情况下将标签文本加粗。到目前为止,我只发现:

UIFont.boldSystemFont(ofSize: CGFloat) 
这正是我所拥有的:

let titleLabel = UILabel()
let fontSize: CGFloat = 26
titleLabel.font = UIFont.boldSystemFont(ofSize: titleLabelFontSize)
但这样我也可以设定尺寸。我想避免这种情况。有办法吗

如果没有办法,Swift中有什么好的解决方法

谢谢大家!

为什么不:

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

要使字体加粗而不改变字体大小,可以创建如下扩展名(基于答案:

所以你可以这样使用它:

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)
    }
}

类似这样的内容:
titleLabel.font=UIFont.boldSystemFont(ofSize:titleLabel.font.pointSize)
?这可能会有帮助:谢谢!效果很好!谢谢对我有用。谢谢!我给出了不同的答案,但我从你的帖子中学到了一些东西。
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)
    }
}