假设我有以下布局:
VStack {
Text(title)
.frame(maxWidth: .infinity, alignment: .leading)
Spacer()
Divider()
.frame(height: 1)
}
.frame(minHeight: 80, alignment: .bottom)
我希望文本字段可以自由扩展,分隔符要对齐到底部,整个事情至少有80点高(但如果没有必要,不要更高)。如果我离开它这样的间隔将采取所有的父母的高度(超过80)。如果我没有一个间隔,两个子视图将一起对齐到顶部,底部或中心。
如何实现所需的垫片性能?或者布局应该有不同的结构?
3条答案
按热度按时间a7qyws3x1#
您可以使用PreferenceKey创建任何视图并观察其内容的高度/宽度。根据您的请求,您可能会使用不同的条件,例如在我的代码中- viewHeight:
hujrc8aj2#
如果我没理解错的话,你需要80或更高的高度,对吗?
既然它取决于文本,为什么不把最小高度赋给
Text
本身,而去掉Spacer
呢?u59ebvdq3#
我已经想出了一个更简单的解决方案,如果我使用ZStack而不是像这样的spacer:
然后,如果我想确保ZStack中的第一个视图不与第二个视图重叠,我可以使用Anton Agafonov提出的解决方案,并在VStack中插入一个spacer,其高度基于ZStack的第二个子视图计算。