You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode13中Button仅bold字重生效如何设置其他字重?

问题成因
  • 你的代码存在重复的.font修饰符,SwiftUI 中后添加的修饰符会覆盖前序同名配置,你写的.font(.title.bold())会被后续的.font(.title3)完全覆盖,仅保留系统默认的title3字体样式。
  • Xcode 13 对应的SwiftUI版本中,Button的默认样式会拦截外层挂载的字体字重配置,只有bold()粗体效果因为是系统按钮默认触发的高优先级样式可以生效,medium、regular等其他字重会被默认样式过滤,不会应用到内部文本上。
修复方案

不要把字体、字重、文本颜色这类文本相关配置挂在Button外层,直接在Button的Label闭包里给Text显式设置对应样式即可,所有字重都能正常生效,参考代码如下:

Button {
    // 在这里写登录按钮的点击逻辑
} label: {
    Text("Login")
        // 要切换字重直接改weight参数即可,支持regular/medium/semibold等所有系统字重
        .font(.title3.weight(.medium))
        .foregroundColor(.white)
}
.padding(20)
.frame(maxWidth: .infinity)
.background(Color("ButtonColor"))
.cornerRadius(4.0)
注意事项
  • 避免给同一个视图重复添加.font修饰符,防止配置被意外覆盖
  • Xcode 13 环境下所有涉及文本的样式(字体、字重、颜色、行间距等),优先直接设置在Text组件上,不要依赖外层视图的样式继承,就能规避大部分按钮文本样式不生效的问题。

内容的提问来源于stack exchange,提问作者porpoising

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 18:27:33