您现在的位置是:首页 >技术交流 >SwiftUI_属性装饰器网站首页技术交流
SwiftUI_属性装饰器
简介SwiftUI_属性装饰器
@ObservableObject / @Published
@ObservedObject的用处和@State非常相似,从名字看来它是来修饰一个对象的,这个对象可以给多个独立的View使用。如果你用@ObservedObject来修饰一个对象,那么那个对象必须要实现ObservableObject协议,然后用@Published修饰对象里属性,表示这个属性是需要被SwiftUI监听的
@EnvironmentObject
@EnvironmentObject修饰器是针对全局环境的。通过它,我们可以避免在初始View时创建ObservableObject, 而是从环境中获取ObservableObject@EnvironmentObject的工作方式是在Environment查找需要的实例
@State
-
通过使用
@State修饰器我们可以关联出View的状态.SwiftUI将会把使用过@State修饰器的属性存储到一个特殊的内存区域,并且这个区域和View struct是隔离的. 当@State装饰过的属性发生了变化,SwiftUI会根据新的属性值重新创建视图 -
创建具有初始值的变量
@State private var isPlaying: Bool = false
@Binding
- 有时候我们会把一个视图的属性传至子节点中,但是又不能直接的传递给子节点,因为在
Swift中值的传递形式是值类型传递方式,也就是传递给子节点的是一个拷贝过的值。但是通过@Binding修饰器修饰后,属性变成了一个引用类型,传递变成了引用传递,这样父子视图的状态就能关联起来 - 在传递属性是使用
$来传递
@Environment
- 通过
@Environment修饰的属性,我们开一个监听系统级别信息的变换,这个例子里一旦Calendar, Locale, ColorScheme发生了变换,我们定义的CalendarView就会刷新
struct CalendarView: View {
@Environment(.calendar) var calendar: Calendar
@Environment(.locale) var locale: Locale
@Environment(.colorScheme) var colorScheme: ColorScheme
var body: some View {
return Text(locale.identifier)
}
}
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。





U8W/U8W-Mini使用与常见问题解决
QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结