我有一个滚动视图,我想基于@State更改滚动的方向。
struct HomeScreen: View {
@State var isVertical: Boolean = true
var body: some View {
VStack{
Button(action: {
self.isVertical.toggle()
}) {
Text("press me")
}.padding()
ScrollView(self.isVertical == true ? .horizontal : .vertical, showsIndicators: true){
if(self.isVertical){
HStack {
Text("a")
Text("b")
Text("c")
Text("d")
Spacer()
}
} else {
VStack{
Text("a")
Text("b")
Text("c")
Text("d")
}
}
}.padding()
}
}
在此屏幕上的第一次显示时,滚动视图是垂直的,一旦我单击按钮并反转状态,滚动视图就会发生变化并发疯,同时在垂直和水平方向上滚动。我究竟做错了什么?我希望基于您正在垂直或水平滚动的内容。非常感谢
答案 0 :(得分:0)
这是固定的变体(还对isVertical
进行了正确的处理以符合含义)
通过Xcode 11.4 / iOS 13.4测试
struct HomeScreen: View {
@State var isVertical: Bool = true
var body: some View {
VStack{
Button(action: {
self.isVertical.toggle()
}) {
Text("press me")
}.padding()
ScrollView(self.isVertical ? .vertical : .horizontal, showsIndicators: true){
if(self.isVertical){
VStack {
Text("a")
Text("b")
Text("c")
Text("d")
Spacer()
}
} else {
HStack{
Text("a")
Text("b")
Text("c")
Text("d")
}
}
}.id(isVertical) // << main part !!
.padding()
}
}
}