如何为 iOS 13 的 SF Symbols 设置权重?

How do I set a weight to SF Symbols for iOS 13?

我有这个

Image(systemName: "arrow.right")

但我如何将其设为粗体、半粗体等?

我正在使用新的 SwiftUI。

使用 font 修饰符时,为您传递的字体设置粗细。

例如,如果您想使用一种默认文本样式(我推荐,因为它们会适应用户的动态类型设置),您可以这样做:

Image(systemName: "arrow.right")
  .font(Font.title.weight(.ultraLight))

如果你想指定字体大小,你可以这样做:

Image(systemName: "arrow.right")
  .font(Font.system(size: 60, weight: .ultraLight))

对于UIKit,符号可以配置如下:

UIImage(systemName: "arrow.right",
        withConfiguration: UIImage.SymbolConfiguration(pointSize: 16, weight: .bold))

SwiftUI 1.0

我还想提一下如何更改粗细以及自定义字体大小。

HStack(spacing: 40) {
    Image(systemName: "moon.zzz")
        .font(Font.system(size: 60, weight: .ultraLight))
    Image(systemName: "moon.zzz")
        .font(Font.system(size: 60, weight: .light))
    Image(systemName: "moon.zzz")
        .font(Font.system(size: 60, weight: .regular))
    Image(systemName: "moon.zzz")
        .font(Font.system(size: 60, weight: .bold))
}

UIKit SWIFT 5.x

要设置它们的属性:创建配置然后将其作为参数传入:

let imageConfig = UIImage.SymbolConfiguration(pointSize: 22, weight: .black, scale: .large)
let image = UIImage(systemName: "delete.right", withConfiguration: imageConfig)

UIKit -- Swift 5 -- Xcode 11

如果您只想设置权重(这样您就不会弄乱自动调整图标大小),请执行以下操作:

let configuration = UIImage.SymbolConfiguration(weight: .semibold)
UIImage(systemName: "trash", withConfiguration: configuration)

您也可以将 Image 换成 Text。有了它,您可以使用 fontWeight() 并将其分配给 Text:

Text(Image(systemName: "xmark"))
    .fontWeight(.semibold)