如何在SwiftUI中使用SF Rounded字体?

时间:2019-06-11 18:49:27

标签: swift fonts swiftui

我正在尝试在SwiftUI项目中使用SF舍入字体,您将如何设置它?

我已经尝试弄乱.font()了,但是它不起作用(我无法将其设置为这种圆形字体)

5 个答案:

答案 0 :(得分:8)

我知道问题与SwiftUI有关,但我认为也包含UIKit答案可能会有所帮助。

let fontSize: CGFloat = 24

// Here we get San Francisco with the desired weight
let systemFont = UIFont.systemFont(ofSize: fontSize, weight: .regular)

// Will be SF Compact or standard SF in case of failure.
let font: UIFont

if let descriptor = systemFont.fontDescriptor.withDesign(.rounded) {
    font = UIFont(descriptor: descriptor, size: fontSize)
} else {
    font = systemFont
}

答案 1 :(得分:1)

Text("Your Text").font(.system(.body, design: .rounded))

答案 2 :(得分:1)

如果有人需要,可以将@ Pomme2Poule的UIKit答案转换为易于使用的函数。函数也使用动态类型,因此它将随字体大小缩放。

func roundedFont(ofSize style: UIFont.TextStyle, weight: UIFont.Weight) -> UIFont {
    // Will be SF Compact or standard SF in case of failure.
    let fontSize = UIFont.preferredFont(forTextStyle: style).pointSize
    if let descriptor = UIFont.systemFont(ofSize: fontSize, weight: weight).fontDescriptor.withDesign(.rounded) {
        return UIFont(descriptor: descriptor, size: fontSize)
    } else {
        return UIFont.preferredFont(forTextStyle: style)
    }
}

答案 3 :(得分:0)

以这种方式对ValueError: id_vars must be a list of tuples when columns are a MultiIndex中的Text对象起作用:

SwiftUI

答案 4 :(得分:0)

我想添加一个额外的用例:如果您想在文本字段之类的圆形SF字体上应用自定义字体粗细,同时仍保持动态字体缩放,则可以执行以下操作:

TextField("test", $test)
    .font(Font.system(.largeTitle, design: .rounded).weight(.heavy))

这是必需的,因为不能直接在.fontWeight()上调用TextField(至少从iOS 13开始)。