使用放大手势;如何放大用户手指实际“捏合”的位置?

shi*_*shi 7 ios swift swiftui

我在 SwiftUI 中遇到了与下面相同的问题。

使用捏合手势;如何放大用户手指实际“捏”的位置?

我想我可以通过给出两个手指的中心坐标anchor参数来解决这个问题。scaleEffect但我不知道如何到达中心。

我的代码:

import SwiftUI

struct MagnificationGestureView: View {
  @State var scale: CGFloat = 1.0
  @State var lastScaleValue: CGFloat = 1.0

  var body: some View {
    Image(
      systemName: "photo"
    )
    .resizable()
    .frame(
      width: 100,
      height: 100
    )
    .scaleEffect(
      self.scale
      //, anchor: <---- give: the two fingers center position
    )
    .gesture(
      magnification
    )
  }

  var magnification: some Gesture {
    // Can I get the center of the pinch?
    MagnificationGesture().onChanged { val in
      let delta = val / self.lastScaleValue
      self.lastScaleValue = val
      self.scale = self.scale * delta
    }.onEnded { _ in
      self.lastScaleValue = 1.0
    }
  }
}

Run Code Online (Sandbox Code Playgroud)

参考: /sf/answers/4092776411/