特定の寸法に合わせて画像をトリミングする必要があります。ビューには、下から始まる 3 つのレイヤーがあります。
- に生の画像があり
UIImage
ます。この画像はカメラからのものです。(cameraImage と呼ばれる) UIView
このイメージを持っています。ユーザーが「トリミング」をクリックすると、UIView の境界を使用して、その中の生の画像がトリミングされます。- これらすべてに加えて、画像をパン、回転、ピンチして収まるようにする必要があるサイズをユーザーに示すガイド画像があります。
上部のガイド画像にパン ジェスチャを追加し、下部の raw 画像を制御したいと考えています。そのため、ガイド イメージは決して移動しませんが、パン ジェスチャをリッスンしています。生の画像をゼロに戻さずにレコグナイザーをリセットする方法がわかりません。多分誰かが助けることができますか?
- (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 の中心を設定し、レコグナイザーをリセットする 3 行目を削除しました。取り除かないと、パンしようとするたびに cameraImage が同じ位置に戻ってしまいます。画像をもう一度クリックすると、タッチしたピクセルから開始されないため、ほとんど機能します。画像を元の位置に戻し、パンできるようにします。