SwiftUI 中如何修改 Menu 组件内按钮的文本字体样式
SwiftUI的Menu组件支持修改内部按钮的字体样式,你遇到的设置不生效问题,是因为系统默认会给Menu内部的交互元素应用统一的内置样式,该样式优先级高于内部Text节点的自定义font属性,会覆盖掉你设置的字体配置。
你可以通过以下两种方案解决:
方案1:单独给内部按钮设置PlainButtonStyle(适配iOS 14+)
如果你需要给不同按钮设置不同的字体样式,给每个内部Button添加.buttonStyle(PlainButtonStyle())即可解除默认样式覆盖,你的自定义字体配置就会生效,修改后的代码如下:
Menu("Mese") { ForEach(months, id:\.self) { month in Button(action: { selectedDate = month } ) { Text(DateFormatter(format: "MMMM").string(from: month) .uppercased()) .font(.footnote) // 此处设置即可生效 } .buttonStyle(PlainButtonStyle()) // 新增该行代码 } }
方案2:通过环境变量统一设置Menu内部字体(适配iOS 14+)
如果所有内部按钮都使用同一个字体,直接给Menu整体设置字体环境变量即可,无需修改每个Button的配置,代码如下:
Menu("Mese") { ForEach(months, id:\.self) { month in Button(action: { selectedDate = month } ) { Text(DateFormatter(format: "MMMM").string(from: month) .uppercased()) } } } .environment(\.font, .footnote) // 新增该行代码统一设置内部字体
如果你同时需要修改Menu本身触发按钮的字体,直接给触发文本添加对应的.font()修饰符即可。
内容的提问来源于stack exchange,提问作者kAiN
相关产品推荐
相关产品推荐

