chu*_*tar 2 core-graphics gesture ios swift swiftui
我希望以下视图能够响应放大手势,但它仅在第一次有效。视图可以按预期放大,但视图释放后,后续触摸不会触发手势。
有没有办法让手势持续工作?
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)
}
}
Run Code Online (Sandbox Code Playgroud)
该视图的使用方式如下:
struct ContentView: View {
var body: some View {
ZStack {
Color.blue
Card()
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个解决方案。使用Xcode 12进行测试(对于以下版本,某些语法可能需要调整)
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)
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1767 次 |
最近记录: |