【发布时间】:2019-09-14 13:35:03
【问题描述】:
我遇到了一种奇怪的间距行为,希望有人能解释一下。我有两个视图,主视图 (ContentView) 包含一个名为 PlayerToolbar 的子视图。所需的行为是 ContentView 占据整个屏幕,而 PlayerToolbar 呈现在屏幕的最底部。 PlayerToolbar 包含图像按钮和间隔。我遇到的问题是 ContentView 只占用屏幕的一部分,并且 PlayerToolbar 未与底部对齐,如图所示。
这是 ContentView 的代码
struct ContentView: View {
var body: some View {
VStack{
Spacer()
Text("Main Content")
Spacer()
PlayerToolBar()
}.background(Color.blue)
}
}
这是 PlayerToolbar 的代码:
struct PlayerToolBar: View {
var body: some View {
HStack{
Spacer()
Button(action: {
print("backward button pressed")
}){
Image(systemName: "gobackward.10").renderingMode(.original) .resizable().aspectRatio(contentMode: .fit)
}
Spacer()
Button(action: {
print("play button pressed")
}){
Image(systemName: "play.circle").renderingMode(.original) .resizable().aspectRatio(contentMode: .fit)
}
Spacer()
Button(action: {
print("go forward button pressed")
}){
Image(systemName: "goforward.10").renderingMode(.original) .resizable().aspectRatio(contentMode: .fit)
}
Spacer()
Button(action: {
print("jot button pressed")
}){
Image(systemName: "pencil.circle").renderingMode(.original) .resizable().aspectRatio(contentMode: .fit)
}
Spacer()
}.background(Color(UIColor.secondarySystemBackground))
}
}
我发现如果在我的 PlayerToolbar 中的第一个 Spacer 和 Button 之间添加一个 Text 对象,屏幕将按预期呈现
...
Spacer()
Text(" ")
Button(action: {
print("backward button pressed")
}){
Image(systemName: "gobackward.10").renderingMode(.original) .resizable().aspectRatio(contentMode: .fit)
}
...
知道为什么它的行为方式以及为什么 Text 让它按照我喜欢的方式运行吗?
【问题讨论】:
-
快速思考?我看不出你在哪里用
ZStack尝试过任何东西。这样的事情对你有什么好处?记住 - 嵌套堆栈...一个“Z”,三个“V”,每个都有两个“H”still应该意味着层次结构中的单个视图。
标签: swiftui