一个框架,旨在模仿 SwiftUI 视图环境,以便在您的 UIKit 视图层级结构中复制值的分布。
使用 UIEnvironment
属性包装器来读取存储在视图环境中的值。在属性声明中使用 UIEnvironmentValues
键路径来指示要读取的值。例如,您可以创建一个属性,使用 userInterfaceStyle
属性的键路径读取当前视图的用户界面样式
final class ViewController: UIViewController {
@UIEnvironment(\.userInterfaceStyle) private var userInterfaceStyle
...
}
您可以根据关联的值来设置视图的内容条件,该值可以通过直接引用已声明的属性来读取
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = userInterfaceStyle == .dark ? .black : .white
}
如果值发生更改,UIEnvironment 框架会更新任何实现了 UIEnvironmentUpdating
的视图。例如,如果用户更改了外观设置,则可能会在上面的示例中发生这种情况。
final class ViewController: UIViewController {
@UIEnvironment(\.userInterfaceStyle) private var userInterfaceStyle
...
}
extension ViewController: UIEnvironmentUpdating {
func updateEnvironment() {
view.backgroundColor = userInterfaceStyle == .dark ? .black : .white
}
}
请参阅示例应用程序以获取更多详细信息。
您可以使用此属性包装器来读取但不能设置环境值。UIEnvironment 框架会根据系统设置自动更新某些环境值,并为其他环境值提供合理的默认值。您可以使用 UIEnvironmentable.environment(_:_:)
便利方法来覆盖其中一些值,以及设置您自定义的环境值。有关 UIEnvironment 框架提供的完整环境值列表,请参阅 UIEnvironmentValues
结构的属性。有关创建自定义环境值的信息,请参阅 UIEnvironmentKey
协议。
最新版本的文档可在此处获取
您可以通过将其添加为包依赖项来将 UIEnvironment 添加到 Xcode 项目中。
您可以通过将其添加为包依赖项来将 UIEnvironment
添加到 Xcode 项目中。
要在 SwiftPM 项目中使用 UIEnvironment 框架,请将以下行添加到您的 Package.swift 文件中的依赖项中
.package(url: "https://github.com/nonameplum/uienvironment"),
将 "UIEnvironment"
作为依赖项包含在您的可执行目标中
.target(name: "<target>", dependencies: [
.product(name: "UIEnvironment", package: "uienvironment"),
]),
最后,将 import UIEnvironment
添加到您的源代码中。
此库在 MIT 许可证下发布。有关详细信息,请参阅 LICENSE。