当我在 HStack 中并尝试在 Text 和 Textfield 视图之间创建空间时,我似乎无法使用 Spacer() 函数。间隔器用于间隔视图的其他区域,但每当我尝试在这两个元素之间间隔时,它就不起作用。
这是我正在使用的代码:
VStack(alignment: .leading, spacing: 0) {
Rectangle()
.frame(height: 2, alignment: .top)
.foregroundColor(Color("grey2"))
Text("Tickets")
.kerning(0.5)
.scaledFont(name: "Gotham Medium", size: 18)
.foregroundColor(Color("grey4"))
.padding(.horizontal)
.padding(.bottom, 3)
.padding(.top, 35)
Rectangle()
.frame(height: 2, alignment: .top)
.foregroundColor(Color("grey2"))
HStack {
Text("Ticket URL")
.kerning(0.5)
.scaledFont(name: "Gotham Book", size: 16)
.foregroundColor(Color("spaceblack"))
Spacer()
TextField("Enter URL", text: $url)
}
.background(Color.blue)
.padding()
Rectangle()
.frame(height: 2, alignment: .top)
.foregroundColor(Color("grey2"))
}
.frame(maxWidth: .infinity)
.background(Color.red)
Run Code Online (Sandbox Code Playgroud)
尝试添加.fixedSize()修饰符到你的TextField
TextField("Enter URL", text: $url)
.fixedSize()
Run Code Online (Sandbox Code Playgroud)
frame或者像这样设置
TextField("Enter URL", text: $url)
.frame(width:200, height:50, alignment:.leading)
Run Code Online (Sandbox Code Playgroud)
问题是 和TextField会Spacer()占用所有可用空间,并且在这种情况下TextField获得优先权;但是,如果您为其指定固定大小或框架,则TextField不会拉伸以占据完整空间,而是会被固定。
.fixedSize可以让你TextField从小处开始,但最终它会继续拉伸你写的更多文本,这可能会导致不必要的行为。
.frame会将您的尺寸固定为提供的宽度,因此不会有任何拉伸,并且Spacer将优先占用可用空间。
| 归档时间: |
|
| 查看次数: |
1246 次 |
| 最近记录: |