【发布时间】:2019-11-13 11:49:52
【问题描述】:
我有一个标题视图,它使用edgesIgnoringSafeArea 将其背景扩展到状态栏下方。为了正确对齐标题视图的内容/子视图,我需要来自GeometryReader 的safeAreaInsets。但是,当使用GeometryReader 时,我的视图不再有合适的尺寸。
代码不使用GeometryReader
struct MyView : View {
var body: some View {
VStack(alignment: .leading) {
CustomView()
}
.padding(.horizontal)
.padding(.bottom, 64)
.background(Color.blue)
}
}
预览
代码使用GeometryReader
struct MyView : View {
var body: some View {
GeometryReader { geometry in
VStack(alignment: .leading) {
CustomView()
}
.padding(.horizontal)
.padding(.top, geometry.safeAreaInsets.top)
.padding(.bottom, 64)
.background(Color.blue)
.fixedSize()
}
}
}
预览
有没有办法在不修改底层视图大小的情况下使用GeometryReader?
【问题讨论】:
-
你的两个例子对我产生了相同的结果。你能发布你的CustomView吗?而且,通过您的屏幕截图,我认为您正在使用 Xcode Previews。你是?目前它们不是很可靠。
-
它只是一个带有嵌入式
HStack的VStack。我检查了 Xcode 预览和模拟器。结果相同。在您的预览提供者中试试这个MyView().previewLayout(.sizeThatFits) -
我正在更新到 beta 3,但我的电脑不可用。我稍后再试,让你知道..