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