【发布时间】:2021-01-04 14:17:48
【问题描述】:
从今天发布的 iOS 14.0 开始,我的 iOS 代码(严重依赖 GeometryReader 进行布局)不再运行良好。也就是说,布局有点随机化。
在 Xcode 调试器中,我比较了在 iOS 13.6 和 iOS 14.0 上运行的相同代码,发现问题在于 iOS 14.0 中没有初始化 GeometryProxy 结构。
在变量 g 下面的示例代码中,一个 GeometryProxy,在 iOS 13 中具有有效的宽度和高度值,但在 iOS 14 中全为零。(这只是我对 GeometryProxy 值所做的更简单的用途之一——我会如果没有人指出这个 sn-p 可以通过另一种方式更容易完成的明显事实,我将不胜感激。)
这是对 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()
}
}
}
【问题讨论】:
-
系统更新的任何不同行为都值得提交反馈,越早越好。
-
你会准备最小可重现的例子吗?
-
我尝试做一个非常简单的例子来重现这一点,发现只有一个视图或一个视图和一个子视图,GeometryProxy 被正确填充。我正在浏览我的应用程序代码,看看我是否能找到不同的东西(除了大小和复杂性),如果我能找到将它添加到示例中。
-
GeometryProxy 值是否可以在单独的线程中设置?我问这个是因为看起来虽然第一次通过视图代码时值为零,但如果有需要重新绘制视图的数据更新,则设置值 - 但有时直到第二次或第三次通过,它似乎有所不同。无论如何,我无法在一个非常简单的示例中重现这一点。很高兴知道其他人是否遇到此问题。
-
我也有同样的问题,谁能帮忙解决一下?