私はピンチジェスチャーを使用して、ユーザーが画像のサイズを増減できるようにしています。私は一時的にそのCGAffineTransformを操作して、ユーザーがスケールを使ってプレイすることができるようにしてから、元に戻してフレームサイズを設定して、画像が高品質になるようにします(CGAffineTransformScaleは画像の品質はなく、画像を伸ばします)。ピンチジェスチャーでUIImageViewを拡大する
-(void)handlePinch:(UIPinchGestureRecognizer *)recognizer{
if(recognizer.state == UIGestureRecognizerStateBegan){
self.alpha = 0.7;
startingTransform = self.transform;
}
recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);
recognizer.scale = 1;
if (recognizer.state == UIGestureRecognizerStateEnded){
self.alpha = 1.0;
CGRect endFrame = self.frame;
self.transform = startingTransform;
self.frame = endFrame;
//self.transform = CGAffineTransformRotate(self.transform, acos(startingTransform.c)); //reapply rotation?
}
}
問題:私のコードの問題は、それが回転を考慮していないということです。私のイメージのいくつかは回転し始め(CGAffineTransformRotateが以前に適用されています)、ピンチジェスチャーが終了したときに起こるのは、イメージビューが回転や縮尺が全くない非常に薄い四角形に歪んでしまうことです。
フレームが設定された後に元の回転を持ち越して適用できると思っていましたが、動作しないと思います。どんな助けもありがとうございます。ありがとう
こんにちは、何を意味するか "をアイデンティティに変換する" のでしょうか?また、フレームをどのようにスケールするのですか?ピンチジェスチャースケールを使ってCGAffineTransformScaleではなくframe.size.width/heightを操作することを意味しますか?おかげで – user339946
恒等変換は基本的に何もしない変換、スケール、回転またはスキューしません変換です。私はフレームサイズを操作することを意味しますが、フレームサイズを操作することを意味しますが、スケーリングと再適用の前にview.centerを保存することによってビューを適切に配置し直す必要があることに留意してください。 – Ahti