当人们询问如何设置粗体字体时,大多数人都建议:
let boldFont = UIFont.boldSystemFont(ofSize: ___)
但是看看标准系统字体提供的所有字体粗细:
所以我的问题是你如何设置轻型,半重型或重型字体重量?我知道的唯一方法是:
sectionLabel.font = [UIFont fontWithName:@"TrebuchetMS-Bold" size:18];
然而,我仍然在问,因为这不是强类型的。大多数其他类属性是通过从一组固定的选项中进行选择来设置的,并且不需要传递我可能输错的字符串。我想我可以设置我自己的全球枚举...但是有更好的想法吗?
答案 0 :(得分:4)
我无法让UIFontDescriptor
使用字体权重特征,但还有另一种方法。
let font = UIFont.systemFont(ofSize: 20, weight: .light)
将.light
替换为UIFont.Weight
中您想要的任何值,它基本上与您问题中显示的下拉列表相匹配。
答案 1 :(得分:2)
您可以使用此扩展名。它将权重分配给fontDescriptor的权重键,并使用此新的描述符实例化字体。
extension UIFont {
func withWeight(_ weight: UIFont.Weight) -> UIFont {
let newDescriptor = fontDescriptor.addingAttributes([.traits: [
UIFontDescriptor.TraitKey.weight: weight]
])
return UIFont(descriptor: newDescriptor, size: pointSize)
}
}
答案 2 :(得分:0)
更多:
let font = UIFont.systemFont(ofSize: 20, weight: UIFont.Weight(500))
答案 3 :(得分:0)
非常老的线程,但是可能有人对如何在Swift中进行操作很感兴趣。
UIFont.Weight
定义了所有选项:
您可以这样简单地使用,例如:
label.font = UIFont.systemFont(ofSize: size, weight: .bold)
或者如果您想保留以前的大小:
label.font = UIFont.systemFont(ofSize: label.font!.pointSize, weight: .bold)