我开始尝试SwiftUI。我希望Circle随机将颜色从红色或绿色更改。
struct ContentView: View {
@State var colorCircle = [".red", ".green"]
var body: some View {
ZStack {
Circle()
.fill(Color.colorCircle.randomElement())
.frame(width: 100,
height: 100)
.position(x: 250,
y: 320)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
答案 0 :(得分:1)
首先使您的colorCircle
数组包含颜色,而不包含字符串。
@State var colorCircle: [Color] = [.red, .green]
还请注意,您正在尝试从colorCircle
结构内部访问Color
:
Color.colorCircle.randomElement()
在colorCircle
中声明ContentView
时,您可以像这样使用它:
self.colorCircle.randomElement()
或(简称):
colorCircle.randomElement()
然后您可以使用randomElement
:
struct ContentView: View {
@State var colorCircle: [Color] = [.red, .green]
var body: some View {
ZStack {
Circle()
.fill(colorCircle.randomElement()!)
.frame(width: 100,
height: 100)
.position(x: 250,
y: 320)
}
}
}
请注意,randomElement()
返回一个可选内容,因此如果您确定数组不为空,则可以强制解开该内容(!
)。
但是,作为一种好的做法,我建议不要使用!
并在可能的情况下提供默认值:
.fill(colorCircle.randomElement() ?? .red)