如何随机更改圆圈的颜色?

时间:2020-07-07 18:27:05

标签: random view swiftui

我开始尝试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()
    }
}

1 个答案:

答案 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)