当ViewModel中的位置值发生更改时,SwiftUI视图可以通过使用属性包装器@ObservedObject
或@StateObject
来实现自动更新。
@ObservedObject
用于在视图中观察ViewModel对象的更改。当ViewModel中的位置值发生更改时,视图会自动重新计算并更新。
示例代码如下:
class ViewModel: ObservableObject {
@Published var position: CGPoint = .zero
}
struct ContentView: View {
@ObservedObject var viewModel = ViewModel()
var body: some View {
Text("Position: \(viewModel.position.x), \(viewModel.position.y)")
}
}
在上述示例中,ViewModel
是一个ObservableObject,它具有一个@Published
属性包装器用于位置值。ContentView
是一个视图,它使用@ObservedObject
属性包装器观察ViewModel
对象的更改。当位置值发生更改时,视图会自动更新并显示新的位置。
这种方法适用于较小的视图层次结构。如果视图层次结构较大或复杂,可以考虑使用@StateObject
属性包装器。@StateObject
与@ObservedObject
类似,但它在整个视图层次结构中共享同一个ViewModel实例,以避免不必要的重复创建。
关于SwiftUI的更多信息和示例,请参考腾讯云的官方文档:SwiftUI - 腾讯云
领取专属 10元无门槛券
手把手带您无忧上云