将系统设置为始终使用圆形字体?

时间:2019-11-10 15:55:30

标签: swiftui

在SwiftUI中,是否有一种方法可以使系统字体的舍入版本成为所有样式的默认值?我正在为应用程序中的所有文本使用一种系统样式(.body,.title,.headline等)。

例如,我可以在单个“文本”视图上使用它

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

我希望避免像这样更新应用程序中的每个文本视图和字段。有没有办法告诉环境默认情况下使用舍入设计?

3 个答案:

答案 0 :(得分:2)

这是在根视图中设置环境字体的方式,默认情况下,所有子视图都具有该字体。

var body: some View {
    NavigationView {
        VStack {
            NavigationLink(destination: Text("Details")) {
                Text("Link")
            }
            Text("Tap on image to find details")
        }
    }.environment(\.font, Font.system(.body, design: .rounded))
}

答案 1 :(得分:1)

您可以在Font上创建扩展,该扩展具有自动将设计设置为四舍五入的功能,同时仍然允许您设置TextStyle

extension Font {
    static func roundedFont(_ style: Font.TextStyle) -> Font {
        Font.system(style, design: .rounded)
    }
}

然后,您将像这样使用它:

struct ContentView: View {
    var body: some View {
        Text("Hello").font(.roundedFont(.body))
    }
}

答案 2 :(得分:0)

您可以像下面这样在Font上创建扩展名

  1. 参数字体sizeweight
  2. 参数字体TextStyle

    extension Font {
       static func roundedFont(WithSize size: CGFloat, AndWeight weight:Weight) -> Font {
           return Font.system(size: size, weight: weight, design: .rounded)
       }
    
       static func roundedFont(_ style: Font.TextStyle) -> Font {
           return Font.system(style, design: .rounded)
       }
    }
    

您可以拨打以下电话:

- Text("Hello").font(Font.roundedFont(WithSize: 15.0, AndWeight: .bold))
- Text("Hello").font(Font.roundedFont(.body))