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