我希望以下视图能够响应放大手势,但它仅在第一次有效。
视图可以按预期放大,但视图释放后,后续触摸不会触发手势。
有没有办法让手势持续工作?
struct Card: View {
@State var magScale: CGFloat = 1
var magnification: some Gesture {
MagnificationGesture().onChanged { gesture in magScale = gesture }
}
var body: some View {
Rectangle()
.frame(width: 200, height: 200, alignment: .center)
.scaleEffect(self.magScale)
.gesture(magnification)
}
}
该视图的使用方式如下:
struct ContentView: View {
var body: some View {
ZStack {
Color.blue
Card()
}
}
}
这是一个解决方案。测试用Xcode 12(对于以下版本,某些语法可能需要调整)
![demo](https://i.stack.imgur.com/AaYNg.gif)
struct Card: View {
@State var magScale: CGFloat = 1
@State var progressingScale: CGFloat = 1
var magnification: some Gesture {
MagnificationGesture()
.onChanged { progressingScale = $0 }
.onEnded {
magScale *= $0
progressingScale = 1
}
}
var body: some View {
Rectangle()
.frame(width: 200, height: 200, alignment: .center)
.scaleEffect(self.magScale * progressingScale)
.gesture(magnification)
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)