【发布时间】:2020-06-23 16:18:07
【问题描述】:
我正在使用几何阅读器来控制 HStack 中某些子视图的水平布局。子视图最终必须是等间距的,并且它们的数量不是固定的。这工作正常,没有任何问题。
但是,仅由内容(子视图)确定的垂直布局会被几何阅读器扩展到最大可用高度(这是标准行为)。
欢迎任何关于如何克服这种行为的建议?
(解释问题的另一种方式是说水平几何阅读器可以解决问题)
为了清楚起见,特此添加代码 sn-p:
public struct ToolbarView: View {
@ObservedObject public var viewModel: ToolbarViewModel
public var body: some View
{
GeometryReader { geometry in
HStack(spacing:0) {
ForEach(self.viewModel.items.filter({ $0.visible })) { item in
ToolbarItemView(itemViewModel:item, toolbarViewModel: self.viewModel)
.frame(width:geometry.size.width / CGFloat(Double(self.viewModel.items.count)))
.font(self.viewModel.textFont)
}
}
}.frame(height:CGFloat(50))
}
}
【问题讨论】:
-
HStack 中等间距的视图不需要 GR。 GR 在这里做什么?
-
您是否只显示您的代码并指出问题所在?
-
对不起,我在解释问题时犯了一个错误。视图由下面带有文本的图像组成。两者都垂直居中。为了看起来不错,所有视图的大小必须相同。 GeometryReader 用于获得相等的大小。我曾考虑使用 Spacers 来获得相同的效果,但由于文本长度不同,这不适用于外观要求。同样,这一切都很好,但是 GeometryReader 在垂直轴上的布局方面遇到了麻烦。
标签: swiftui