SwiftUI中如何恢复视图属性的默认/继承值?类似CSS的initial与inherit
SwiftUI实现类似CSS initial/inherit的样式恢复
先看你给出的原始代码:
struct ContentView: View { @State private var isRed = false var body: some View { Button("Click Me") { isRed.toggle() } .foregroundColor(isRed ? .red : /* some code */) } }
SwiftUI里没有像CSS那样的initial或inherit关键字,但有更直接的方式实现你要的逻辑——给修饰器传nil。
对于foregroundColor这类接受可选类型(Color?)的样式修饰器,当你传入nil时,会清除当前视图上的显式颜色设置,让按钮文字恢复到系统默认样式,或者继承父视图的颜色值,完全符合你“否则恢复默认/继承值”的需求。
修改后的完整代码如下:
struct ContentView: View { @State private var isRed = false var body: some View { Button("Click Me") { isRed.toggle() } .foregroundColor(isRed ? .red : nil) } }
如果遇到少数不支持可选参数的修饰器,也可以用条件修饰的方式,针对不同状态应用不同的修饰器,但这种场景比较少见,大部分常用的样式修饰器(比如font、background等)都支持nil的用法。
内容的提问来源于stack exchange,提问作者Michael Knightly
相关产品推荐
相关产品推荐

