縦横比を維持せずにピンチして再スケーリングしたい画像ビューがあります。これを行うには、次のいずれかが実行可能であると考えました。
- 2 つのピンチ ジェスチャ レコグナイザーを使用します。1 つは水平方向に伸縮し、もう 1 つは垂直方向に伸縮します。
- 1 つのピンチ レコグナイザーを使用しますが、2 つの変換を順番に適用します。
これが私のピンチ処理関数です:
- (void) pinch:(UIPinchGestureRecognizer *)recognizer {
static CGRect initialBounds;
if (recognizer.state == UIGestureRecognizerStateBegan)
{
initialBounds = imageView.bounds;
}
CGFloat factor = [(UIPinchGestureRecognizer *)recognizer scale];
//scale horizontally
CGAffineTransform zt = CGAffineTransformScale(CGAffineTransformIdentity,
factor-(1.0-factor), 1.0);
imageView.bounds = CGRectApplyAffineTransform(initialBounds, zt);
//now scale vertically
zt = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, factor);
imageView.bounds = CGRectApplyAffineTransform(initialBounds, zt);
return;
}
何らかの理由で、変換は垂直方向にのみ行われています (最後のもの)。2 番目の CGRectApplyAffineTransform の最初のパラメーターを imageView.bounds に変更しようとしましたが、それでも機能しませんでした。
誰が私が間違っているのか教えてもらえますか?
また、2 つのピンチ ジェスチャ レコグナイザーを使用すると、同じことが起こります。実際に認識されるのはそのうちの 1 つだけです。
ありがとう!