从今天发布的 iOS 14.0 开始,我的 iOS 代码(严重依赖 GeometryReader 进行布局)不再运行良好。即,布局已经有点随机。
在 Xcode 调试器中,我比较了在 iOS 13.6 和 iOS 14.0 上运行的相同代码,发现问题在于 iOS 14.0 中未初始化 GeometryProxy 结构。
在变量 g 下方的示例代码中,GeometryProxy 在 iOS 13 中具有有效的宽度和高度值,但在 iOS 14 中全部为零。(这只是我对 GeometryProxy 值所做的更简单的使用之一——如果没有人,我将不胜感激指出一个明显的事实,这个片段可以通过另一种方式更容易地完成。)
这是对 GeometryReader 的更改还是错误?有人有解决方法吗?我是否在依赖 GeometryReader 进行动态布局时犯了一个巨大的错误?
struct TextView: View {
@EnvironmentObject var data: RecorderData
let m = MusicalNote()
var body: some View {
GeometryReader { g in
Stack(alignment: .leading) {
Text(self.data.curNote.getString())
.font(.system(size: g.size.height / 2.4))
.padding(.bottom)
Text(self.data.fdata.fingerings[self.data.curRecorder.id] ![self.data.curNote.seq] ![self.data.curFingType] ![self.data.currentFingeringChoice].comment)
.font(.headline)
}
Spacer()
}
}
}
Run Code Online (Sandbox Code Playgroud)