无法更改 swift 中的 @State 变量的值?

Unable to change the value of a @State variable in swift?

Swift 5.x iOS 15

只是玩弄一个想法却遇到了障碍?为什么我不能在这段代码中改变这个状态变量的值?

struct ContentView: View {
let timer = Timer.publish(every: 0.25, on: .main, in: .common).autoconnect()

@State var rexShape = CGRect(x: 0, y: 0, width: 128, height: 128)

var body: some View {
    Arc(startAngle: .degrees(0), endAngle: .degrees(180), clockwise: true)
        .stroke(Color.red, lineWidth: 2)
        .frame(width: 128, height: 128, alignment: .center)
        .onReceive(timer) { _ in
            rexShape.height -= 10
        }
        
}
}

struct Arc: Shape {

  var startAngle: Angle
  var endAngle: Angle
  var clockwise: Bool

  func path(in rect: CGRect) -> Path {
    var path = Path()
    path.addArc(center: CGPoint(x: rect.midX, y: rect.midY), radius: rect.width / 2, startAngle: startAngle, endAngle: endAngle, clockwise: clockwise)

    return path
  }
}

行 rexShape.height 告诉我高度是一个只获取 属性?这对我来说毫无意义,因为 rexShape 应该是一个变量?我只是失去理智了吗...

如果您密切注意错误消息,编译器不会抱怨 rexShape 不可变,而是 CGRect.height 不可变。

要更改 CGRect 中唯一的 heightweight,您需要通过 size 属性.

rexShape.size.height -= 10