ZStack顶部的滚动视图



考虑以下示例:

ZStack{
VStack{
ForEach(0..100) { elem in
Button(action: {"do something..."}, label: Text("(elem)"))
}
}
ScrollView {
ForEach(0..<100) { elem in 
Text("(elem)")
}    
}
}

当我把ScrollView放在按钮顶部时,ScrollView就不能再滚动了。仅在ScrollView下方没有按钮的位置。是否可以";停用";ZStack底层?我试过.disable(),但没有帮助。这不是一个真实的例子。ScrollView将显示为弹出窗口,因此我需要知道如何解决此用例。

只需给滚动视图一些高度。否则,scrollView的高度会比屏幕的高度更大,因为里面有所有元素,所以它变得不可滚动,因为没有什么可滚动的。

struct ContentView: View { 
let fullHeight : CGFloat = UIScreen.main.bounds.height
var body: some View {
ZStack{
VStack{
ForEach(0..<100) { elem in
Button(action: {
let _ = print("do something...")
}, label:{ Text("Buttons (elem)")  }
)
}
}
ScrollView {
ForEach(0..<100) { elem in
Text("(elem)")
}
} .frame( height: fullHeight , alignment: .center)
}

}
}

我找到了一个简单的解决方案:

ZStack{
VStack{
ForEach(0..100) { elem in
Button(action: {"do something..."}, label: Text("(elem)"))
}
}
ScrollView {
ForEach(0..<100) { elem in 
Text("(elem)")
}    
}
.zIndex(1) // <<<<<------ solution
}

最新更新