我需要裁剪图像以匹配特定尺寸。从底部开始,我的视图中有三层:
- 我有原始图像在
UIImage
. 此图像来自相机。(称为cameraImage) - 我有一个
UIView
拿着这个图像。当用户单击“裁剪”时,UIView 的边界用于裁剪其中的原始图像。 - 最重要的是,我有一个指导图像,它向用户展示了他们需要平移、旋转和捏合图像以适应的尺寸。
我想将平移手势添加到顶部指南图像并让它控制底部的原始图像。所以引导图像永远不会移动,但它正在监听平移手势。如果不让我的原始图像跳回零,我无法弄清楚如何重置识别器。也许有人可以帮忙?
- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer {
CGPoint translation = [recognizer translationInView:recognizer.view];
recognizer.view.center = CGPointMake(recognizer.view.center.x+translation.x, recognizer.view.center.y+ translation.y);
[recognizer setTranslation:CGPointMake(0, 0) inView:recognizer.view];
}
上面的代码在我的手势中效果很好,附在底部图像上。问题是当用户超出视图范围时,图像停止平移并且基本上卡住了。你不能再碰它,所以它就坐在那里。所以我想如果我将手势附加到顶部它会解决这个问题。
- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer {
CGPoint translation = [recognizer translationInView:recognizer.view];
cameraImage.center = CGPointMake(recognizer.view.center.x+translation.x, recognizer.view.center.y+ translation.y);
}
这几乎可以工作。我设置了 cameraImage 的中心并删除了重置识别器的第三行。如果我不删除它,每次我尝试平移时,cameraImage 都会跳回相同的位置。它几乎可以工作,因为当您再次单击图像时,它不会从您触摸的像素开始。它将图像移回原始位置,然后让您平移。