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

Posted

技术标签:

【中文标题】将系统设置为始终使用圆角字体?【英文标题】:Set System to always use Rounded Font? 【发布时间】:2019-11-10 15:55:30 【问题描述】:

在 SwiftUI 中,有没有办法让系统字体的圆角版本成为所有样式的默认值?我正在为应用程序中的所有文本使用其中一种系统样式(.body、.title、.headline 等)。

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

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

我想避免像这样更新我的应用程序中的每个文本视图和字段。有没有办法告诉环境默认使用圆角设计?

【问题讨论】:

我提到了@Environment(\.font),但它显​​示为只读 【参考方案1】:

这里是如何在根视图中设置环境字体,默认情况下所有子视图都会有它。

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))

【讨论】:

这会为视图中的所有文本设置一个默认字体。我正在寻找一种始终使用圆形设计的方法,无论我使用哪种风格。这不会那样做。 我喜欢这个答案的简单性。但是,导航栏中的Text-Views 不会更改为新字体。并且以下方法会导致Text 不再符合字符串协议的错误。 .navigationBarTitle(Text("Title").environment(\.font, Font.custom(Fonts.plex, size: 28)))任何想法如何在系统范围内更改字体?【参考方案2】:

您可以在 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))
    

【讨论】:

我仍然需要更新应用程序中使用文本样式的每个视图,所以我看不出这将如何解决我的问题。 我不认为有办法做你想做的事。我不认为你可以覆盖系统字体【参考方案3】:

您可以在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))

【讨论】:

以上是关于将系统设置为始终使用圆角字体?的主要内容,如果未能解决你的问题,请参考以下文章

iOS tableViewCell 同时设置圆角和阴影

CSS3边框与圆角

Swift高效设置圆角图片的方法

QPushButton样式设置

QPushButton样式设置

Symfony 4.4:为图像文件上传保留的实体/模型属性由表单系统设置更新(结果始终为空 - 没有错误)