在SwiftUI中,是否有一种方法可以使系统字体的舍入版本成为所有样式的默认值?我正在为应用程序中的所有文本使用一种系统样式(.body,.title,.headline等)。
例如,我可以在单个“文本”视图上使用它
Text("some text")
.font(.system(.body, design: .rounded))
我希望避免像这样更新应用程序中的每个文本视图和字段。有没有办法告诉环境默认情况下使用舍入设计?
答案 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
上创建扩展名
size
和weight
参数字体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))