鉴于此代码:
import SwiftUI struct ContentView: View { var body: some View { VStack(alignment: .leading) { Text("Title") .font(.title) Text("Content") .lineLimit(nil) .font(.body) Spacer() } .background(Color.red) } } #if DEBUG struct ContentView_Previews : PreviewProvider { static var previews: some View { ContentView() } } #endif
结果是这个界面:
VStack即使标签/文本组件不需要全宽,我如何才能填充屏幕的宽度?
VStack
我发现的一个技巧是在结构中插入一个 空 HStack,如下所示:
HStack
VStack(alignment: .leading) { HStack { Spacer() } Text("Title") .font(.title) Text("Content") .lineLimit(nil) .font(.body) Spacer() }
这会产生所需的设计:
有没有更好的办法?
尝试使用.frame带有以下选项的修饰符:
.frame
.frame( minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .topLeading ) struct ContentView: View { var body: some View { VStack(alignment: .leading) { Text("Hello World") .font(.title) Text("Another") .font(.body) Spacer() } .frame( minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .topLeading ) .background(Color.red) } }
这被描述为一个灵活的框架(请参阅文档),它将拉伸以填满整个屏幕,并且当它有额外的空间时,它会将其内容居中放置在其中。