我不明白为什么DragGesture
不适用于 VStack/HStack/ZStack。考虑以下简单示例:
struct ContentView: View {
@State private var offset = CGSize.zero
var body: some View {
VStack {
Text("Hello World!")
}
.frame(width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height)
.edgesIgnoringSafeArea(.all)
.offset(y: offset.height)
.gesture(DragGesture()
.onChanged { val in
self.offset = val.translation
}
.onEnded { val in
self.offset = .zero
}
)
}
}
我希望整个视图能够根据offset
var(通过拖动手势更改)。但即使我写了.gesture
上的修饰符VStack
并且即使VStack
是全屏的(感谢.frame
修改器)拖动手势将不起作用VStack
。仅当我拖动“Hello world”文本时该手势才有效,但如果我拖动到文本之外则该手势没有响应Text
(但仍在全屏内VStack
)。有任何想法吗?谢谢。
实际上,SwiftUI 有一个功能旨在解决这个问题,而无需任何背景。
只需放置.contentShape(Rectangle())
就在你的手势修改器之前,它将响应整个封闭的矩形。 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)