在不影响外框的情况下使用 SwiftUI GeometryReader?
Posted
技术标签:
【中文标题】在不影响外框的情况下使用 SwiftUI GeometryReader?【英文标题】:Use SwiftUI GeometryReader without affecting outer frame? 【发布时间】:2019-06-10 10:03:31 【问题描述】:是否可以使用GeometryReader
使其不仅仅填满父视图?
作为一个具体示例,我想使用.padding(.bottom, geometry.safeAreaInsets.bottom > 0 ? 0 : 12.0)
控制底部边距。这将使用安全区域作为 iPhone X 上的边距和旧设备上的自定义边距。
如果没有GeometryReader
,我的视图会占用适合其实际垂直大小的空间。 对于阅读器,视图占据了屏幕的 1/2。
VStack
Spacer()
GeometryReader proxy in // Lays out nicely without this...
HStack
Text("Wrong")
Spacer()
.border(Color.gray, width: 1)
【问题讨论】:
【参考方案1】:只需将 .fixedSize()
修饰符添加到您的 HStack 即可。这将达到预期的效果。
【讨论】:
fixedSize()
在该示例中有效,将fixedSize(horizontal:vertical:)
附加到我的GeometryReader
在我实际工作的View
中有效(嵌套了ZStack
s)。【参考方案2】:
您也可以尝试将.aspectRatio(contentMode: .fit)
修饰符添加到GeometryReader
。
【讨论】:
以上是关于在不影响外框的情况下使用 SwiftUI GeometryReader?的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI 如何在不使用 List 的情况下从 @ObservedObject ViewModel 获取 Firebase 数据
在不使用导航链接的情况下获取 SwiftUI 列表中的选定项目