通常需要仅在满足特定条件时才应用的修饰符,在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: 环境修饰符
---来自腾讯云社区的---韦弦zhy
微信扫一扫打赏
支付宝扫一扫打赏