MacOS SwiftUI:如何创建兼具活力效果与前景强调色的按钮?
在MacOS SwiftUI中实现带强调色+活力效果的按钮
当然可以实现,你遇到的问题是直接给Label设置foregroundStyle(Color.accentColor)会禁用活力效果,因为这个写法用的是纯色而非层级样式。这里有两种靠谱的解决方法:
方法1:用按钮的tint修饰符替代直接设置Label的前景色
把强调色设置给按钮本身的tint,而不是直接给Label加foregroundStyle,这样既保留按钮的活力效果,又能让图标用上强调色:
Button(action: onClick) { Label(title, systemImage: "gearshape.circle.fill") } .buttonStyle(.plain) .labelStyle(.iconOnly) .tint(.accentColor)
方法2:使用层级样式的foregroundStyle(.accent)
根据官方文档,当foregroundStyle搭配层级样式时不会禁用活力效果,所以可以把原来的Color.accentColor换成层级样式的.accent:
Button(action: onClick) { Label(title, systemImage: "gearshape.circle.fill") .foregroundStyle(.accent) } .buttonStyle(.plain) .labelStyle(.iconOnly)
这两种方法都能让按钮在Material背景上呈现类似SplitView侧边栏标签的效果——图标用强调色,同时保留活力效果的通透感。
内容的提问来源于stack exchange,提问作者Kaven
相关产品推荐
相关产品推荐

