Как мне перерисовать Shape с новыми данными, когда эти данные являются новым «источником правды»? Ниже показано, что только представление "Текст (" ... ") обновляется с помощью ObservedObject. Сам Shape dr aws только один раз.
import SwiftUI
struct ContentView: View {
@ObservedObject var cntrl:Controller=Controller()
var body: some View {
VStack {
subviewone(cntrl: cntrl)
graph(cntrl: cntrl)
.stroke()
.fill(Color.red)
subviewone(cntrl: cntrl)
}.padding(.all)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct graph: Shape {
@ObservedObject var cntrl:Controller
func path(in rect: CGRect) -> Path {
print("function beeing called")
return Path { path in
path.addArc(center: CGPoint(x: rect.midX, y: rect.midY), radius: CGFloat(100-cntrl.test), startAngle: Angle.init(degrees: 0), endAngle: Angle.init(degrees: 360), clockwise: true)
}
}
}
struct subviewone: View {
@ObservedObject var cntrl:Controller
var body: some View {
VStack {
Text("******")
Text("\(cntrl.test)")
Text("******")
}
}
}
class Controller:ObservableObject {
@Published var test=0
init() {
_ = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) {_ in
self.test+=1
}
}
}
Код работает, если я опускаю .stroke ( ) и .fill (Color.red)
struct ContentView: View {
@ObservedObject var cntrl:Controller=Controller()
var body: some View {
VStack {
subviewone(cntrl: cntrl)
graph(cntrl: cntrl)
subviewone(cntrl: cntrl)
}.padding(.all)
}
}
Спасибо за любые предложения. Libor