Layout 具有框架最大高度和.infinity的SwiftUI视图布局
如何以这种方式在SwiftUI中布局视图Layout 具有框架最大高度和.infinity的SwiftUI视图布局,layout,frame,swiftui,Layout,Frame,Swiftui,如何以这种方式在SwiftUI中布局视图 我有要拉伸以填充可用空间的输入字段 这些输入被放置在VStack中,这样我就给它们frame(高度:40) 此VStack位于具有框架的白色框内(最大高度:geometry.size.height*0.8) 最后一个白框并没有根据VStack中的输入数量进行调整,而是占用0.8个空间,然后这些输入被分散在VStack中(添加的间隔大于所需) 我不明白为什么会发生这样的事情 FormView() .frame( maxWidth:
frame(高度:40)
框架的白色框内(最大高度:geometry.size.height*0.8)
FormView()
.frame(
maxWidth: geometry.size.width * 0.85,
maxHeight: geometry.size.height*0.85
)
表单视图包含:
VStack(spacing: 4) {
FormInput(label: "First Name", input: self.$firstName) {
isEditing in
self.avoider.editingField = 0
}
.frame(height: 40)
.padding(0)
.avoidKeyboard(tag: 0)
我发现了为什么有时视图(布局)不会折叠以占用尽可能小的空间,而是扩展到maxHeigh/maxWidth 它发生在我们使用
GeometryReader { geometry in
VStack { ... }
}
然后这些视图不会折叠并扩展到maxHeight。我在内部使用了这个GeometryReader
。避免键盘(标记:0)
我没有得到您想要的和您拥有的。我找到了它。通常我在中间有白色矩形FormView(设置为屏幕高度的最大85%)然后我有一个输入字段,据说是40磅高(它们在VStack内),输入的框架maxWidth/maxHeight设置为.infinity。它就是这样工作的。avoidKeyboard修饰符设置了.preference()并使用GeometryReader使这个布局被破坏。我只改变了框架()和avoidKeybaord()的顺序修改器,它又开始工作了!