如何解决SwiftUI,删除 VStack 中视图之间的空间?
为什么三个蓝色矩形和列表之间有这么大的空间?如何删除空间,以便 vstack 中的所有视图堆栈在顶部?我尝试在 List 之后直接使用 Spacer()
,但没有任何改变。
struct ContentView: View {
init() { UITableView.appearance().backgroundColor = UIColor.clear }
var body: some View {
NavigationView {
ZStack {
Color.red
.ignoresSafeArea()
vstack {
HStack {
Text("Faux Title")
.font(.system(.largeTitle,design: .rounded))
.fontWeight(.heavy)
Spacer()
Button(action: {
// settings
},label: {
Image(systemName: "gearshape.fill")
.font(.system(.title2))
})
}
.padding()
GeometryReader { geometry in
HStack() {
Text("1")
.frame(width: geometry.size.width * 0.30,height: 150)
.background(Color.blue)
Spacer()
Text("2")
.frame(width: geometry.size.width * 0.30,height: 150)
.background(Color.blue)
Spacer()
Text("3")
.frame(width: geometry.size.width * 0.30,height: 150)
.background(Color.blue)
}
}
.padding()
List {
Text("One")
Text("Two")
Text("Three")
Text("Four")
Text("Five")
Text("Six")
}
.listStyle(InsetGroupedListStyle())
}
}
.navigationBarHidden(true)
}
}
}
额外问题:在 Web 开发中,您可以打开浏览器的 Web Inspector 并使用元素选择器单击突出显示其边框的元素。对于像这样的事情很有用,你试图找出有问题的间距属于哪个元素。 Xcode 中有类似的东西吗?
解决方法
SELECT fk_id FROM TableA a
WHERE a.name = 'A'
AND NOT EXISTS (
SELECT 1 FROM TableA b
WHERE b.name = 'B'
AND a.fk_id = b.fk_id
)
对于您的问题,您可以在 Xcode 中使用视图检查器。 https://developer.apple.com/library/archive/documentation/ToolsLanguages/Conceptual/Xcode_Overview/ExaminingtheViewHierarchy.html
,既然您知道带有蓝色矩形的 HStack 的高度为 150
,您应该使用 .frame(height: 150)
将其限制为:
GeometryReader { geometry in
...
}
.padding()
.frame(height: 150) //Here
否则,GeometryReader
将占据所有可用的垂直空间。
回复:您的 Web 开发比较,请查看 Xcode 视图层次结构检查器。不完全相同,但有相同的脉络:https://developer.apple.com/library/archive/documentation/ToolsLanguages/Conceptual/Xcode_Overview/ExaminingtheViewHierarchy.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。