点击水平翻转 UIImageView 将导致 "reversed" 手势识别器并且只能工作 1x

Flip an UIImageView horizontal on tap will result in "reversed" gesture recognizer and only works 1x

我在我的相机应用程序中实现了像 instagram 这样的 giphy 贴纸。

我想使用以下代码在点击时水平翻转贴纸:

@objc func tapGesture(_ gesture: UITapGestureRecognizer) {
    guard let gestureView = gesture.view else { return }
    gestureView.transform = CGAffineTransform(scaleX: -1, y: 1)
}

1:这只有效一次。不可反转翻转。

2:我添加了几个手势识别器。当我翻转图像时,手势也会反转(向不同方向旋转等)

翻转和重新翻转图像并保持原始手势识别器行为的最佳方法是什么?

好吧,我认为您的代码可以实现。

  1. 如果您将变换设置为 (-1|1),例如你翻转 x 轴,然后这个翻转将应用于 "original" 坐标系。换句话说,您不对现有变换矩阵应用变换(例如翻转和再次翻转),而只是修改原始矩阵(即单位矩阵)。 您可能想要的是:
    gestureView.transform = gestureView.transform.scaledBy(x: -1, y:1)
  1. 如果您尝试顺时针旋转视图,但此视图被翻转,那么您会从后面看到旋转,例如它看起来好像旋转是逆时针的。手势识别器仍按预期工作。