【发布时间】:2022-12-18 01:26:27
【问题描述】:
我在我的一个旧项目中遇到过这个问题,我确信当时没有运行时问题:(当前 Xcode:14.1)
样式是全局的:
@main
struct TestingApp: App {
var body: some Scene {
WindowGroup {
TestView().environmentObject(Style()) // <- Here
}
}
}
每个页面都可以通过EnvironmentObject访问样式:
struct TestView: View {
@EnvironmentObject private var style: Style
public var body: some View {
Text("Hello World")
.padding(style.size.inputPadding) // <- Run-time issue on this line
}
}
Style 本身声明如下:
class Style: ObservableObject {
@Published var size = Size()
}
struct Size {
@ScaledMetric(relativeTo: .body) var inputPadding: CGFloat = 8
}
我遇到了这个运行时问题:
在安装到视图之外访问环境 <CGFloat> 的值。这将始终读取默认值并且不会更新。
和
在视图上安装之外访问环境 <DynamicTypeSize> 的值。这将始终读取默认值并且不会更新。
有人可以解释发生了什么以及为什么这被认为是访问中价值外部安装在
View上?
【问题讨论】:
标签: xcode swiftui runtime-error