我的应用程序使用带有一些填充的 GeometryReader 在 NavigationView 内设置视图框架尺寸。
从 iOS 14 开始,我收到以下错误消息:
无效的框架尺寸(负或非有限)
这是一些要测试的示例代码:
import SwiftUI
struct ContentView: View {
let padding:CGFloat = 16.0
var body: some View {
NavigationView {
GeometryReader { p in
Text("Hello, world!")
.frame(width: p.size.width - padding)
.padding()
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
删除 NavigationView 可以解决问题,但我需要 NavigationView 中容器视图的当前宽度和高度。
有什么建议吗?
正如 Patric Fu 所说,这通常是一个初始化问题,会生成警告消息“帧尺寸无效(负数或非有限)”。
就我而言,此警告是在以下语句中生成的
当使用以下语句生成 frameSide
更改上述语句以提供如下默认值
解决了这个问题并且没有生成警告。
当然,三元运算符中的条件会根据变量“frameSide”的构造而有所不同。我发现这是一种比使用“调度异步操作”更简单的方法。如果将此答案作为对 Patric Fu 原始答案的评论附加,则更有可能有所帮助。但是,我没有足够的声誉发表评论。