3 偏好设置
2 分钟阅读
原文链接: https://developer.apple.com/documentation/swiftui/preferences
3 偏好设置
把配置偏好从视图传递给容纳它们的容器视图。
概述
环境用于配置某个视图的子视图,而偏好设置则用于把配置信息从子视图向上发送给容器。不过,与从一个容器向下流向众多子视图的配置信息不同,单个容器需要协调从众多子视图向上流动的、可能相互冲突的偏好设置。

当你用 PreferenceKey 协议定义自定义偏好时,就指明了如何合并来自多个子视图的偏好。然后你可以用 preference(key:value:) 视图修饰符为某个视图设置该偏好的值。许多内置修饰符(例如 navigationTitle(_:))都依赖偏好设置把配置信息发送给它们的容器。
设置偏好
- preference(key:value:) —— 为给定偏好设置一个值。
- transformPreference(::) —— 对某个偏好值应用一次变换。
创建自定义偏好
- PreferenceKey —— 由视图产生的具名值。
基于几何信息设置偏好
- anchorPreference(key:value:transform:) —— 为指定的偏好键设置一个值,该值是与当前坐标空间关联的几何值的函数,使该值的读取者可以把几何信息转换到自己的本地坐标中。
- transformAnchorPreference(key:value:transform:) —— 为指定的偏好键设置一个值,该值是键的当前值与绑定到当前坐标空间的几何值的函数,使该值的读取者可以把几何信息转换到自己的本地坐标中。
响应偏好变化
- onPreferenceChange(_:perform:) —— 添加当指定偏好键的值变化时要执行的动作。
由偏好生成背景与叠加层
- backgroundPreferenceValue(::) —— 从视图中读取指定的偏好值,用它生成第二个视图,并把它作为原视图的背景。
- backgroundPreferenceValue(:alignment::) —— 从视图中读取指定的偏好值,用它生成第二个视图,并把它作为原视图的背景。
- overlayPreferenceValue(::) —— 从视图中读取指定的偏好值,用它生成第二个视图,并把它作为原视图的叠加层。
- overlayPreferenceValue(:alignment::) —— 从视图中读取指定的偏好值,用它生成第二个视图,并把它作为原视图的叠加层。