SwiftUI中存在一些隐式的HStack,写起来比较便利。有时会懒得写HStack。大多数状况写不写作用是一样的。不过也有些时候会有奇怪的体现。
因为文档没有清楚阐明,也没有源码,所以说不清到底是什么原因,仅仅做个记载。或许有人也遇到相似的状况,可以避坑。
struct ContentView: View {
let string = "这是一段测验代码"
var body: some View {
NavigationView {
List {
NavigationLink {
Text(string)
} label: {
Text(string)
Spacer()
Text("(string.count)字")
}
}
.listStyle(.sidebar)
.padding()
}
}
}
这儿的label是隐式的HStack,也能运转,大致状况也不差。看作用。
struct ContentView: View {
let string = "这是一段测验代码"
var body: some View {
NavigationView {
List {
NavigationLink {
Text(string)
} label: {
HStack {
Text(string)
Spacer()
Text("(string.count)字")
}
}
}
.listStyle(.sidebar)
.padding()
}
}
}
这儿的label是显式写出的HStack,看作用。
可以看出,同样是Spacer,在隐式HStack中,它的固定宽度比显式中的大。而且不能通过设置小一点的minLength来缩小这个固定的宽度。Spacer(minLength: 2),这样写也是没用的。
不知道具体的原因。横竖偷懒时如果遇到奇怪的体现,仍是老老实实把HStack给补上。