SwiftUI:条件修饰符
- 2020 年 4 月 1 日
- 筆記
通常需要仅在满足特定条件时才应用的修饰符,在SwiftUI中,最简单的方法是使用三元运算符。
提醒一下,要使用三元运算符,首先编写条件,然后是问号,如果条件为真,则应使用什么,如果条件为假,则应使用冒号后跟什么。
例如,如果您有一个可以为true或false的属性,则可以使用该属性来控制按钮的前景色,如下所示:
struct ContentView: View { @State private var useRedText = false var body: some View { Button("Hello World") { // flip the Boolean between true and false self.useRedText.toggle() } .foregroundColor(useRedText ? .red : .blue) } }
因此,当useRedText
为true时,修饰符有效地读取.foregroundColor(.red)
,当它为false时,修饰符变为.foregroundColor(.blue)
。因为SwiftUI监视@State
属性中的更改,并重新调用body
属性,只要该属性更改,颜色就会立即更新。
有时可以使用常规if
条件返回基于某个状态的不同视图,但这仅在少数情况下是可能的。
例如,这种代码是不允许的:
var body: some View { if self.useRedText { return Text("Hello World") } else { return Text("Hello World") .background(Color.red) } }
记住,some View
意味着“将返回一种特定类型的视图,但我们不想说它是什么。”由于SwiftUI使用通用的ModifiedContent
包装器创建新视图的方式, Text(…)
和Text(…).background(Color.red)
是不同的底层类型,这与some View
不兼容。
Previous: 为什么SwiftUI使用 some View 作为视图类型? |
Hacking with iOS: SwiftUI Edition |
Next: 环境修饰符 |
---|