swiftui - GeometryReader 在提取视图时表现异常
问题描述
在此示例中,“hello”文本按预期放置在屏幕中间。
struct ContentView: View {
var body: some View {
GeometryReader { geo in
Text("hello")
.background(Color.green)
}
.background(Color.blue)
}
}
但是当我移动Text
到提取的视图时,“你好”文本移动到屏幕的左上角。
struct ContentView: View {
var body: some View {
GeometryReader { geo in
ExtractedView()
}
.background(Color.blue)
}
}
struct ExtractedView: View {
var body: some View {
Text("hello")
.background(Color.green)
}
}
这是一个错误,还是我不理解的预期行为?
解决方案
确认 Xcode 12 / iOS 14 的左上角位置。我不认为这是一个错误。实际上,GeometryReader
它不是一个容器,也没有(不应该)有自己的默认对齐方式,它的目的是自定义对齐方式,所以我们来了。
可能的解决方案(使用 Xcode 12b3 / iOS 14 测试):
- 按位置放置
GeometryReader { geo in
ExtractedView()
.position(x: geo.size.width / 2, y: geo.size.height / 2)
}
- 包装成全尺寸堆栈容器(具有默认对齐方式)
GeometryReader { geo in
VStack {
ExtractedView()
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
推荐阅读
- java - 如何将属性文件注入环境 bean?
- css - 引用我的 sass 文件中的类时出错
- kubernetes - 如何从现有的 github 项目中添加 helm repo?
- sql - 如何使用 SQL 从列中获取 >= 25%、50%、75% 的值
- python - 仅在服务器上运行时列出索引超出范围错误 - python
- java - Java成绩练习
- android - (< API 24)NavigationView 错误(膨胀类)(适用于 API24+)
- python - TensorFlow 在不需要时要求占位符 feed_dict
- generics - 通用函数返回映射
- scala - 无法将“ordId”从字符串转换为 int,因为它可能会截断