2012-03-16 36 views
1

私はピンチジェスチャーを使用して、ユーザーが画像のサイズを増減できるようにしています。私は一時的にその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が以前に適用されています)、ピンチジェスチャーが終了したときに起こるのは、イメージビューが回転や縮尺が全くない非常に薄い四角形に歪んでしまうことです。

フレームが設定された後に元の回転を持ち越して適用できると思っていましたが、動作しないと思います。どんな助けもありがとうございます。ありがとう

答えて

1

UIView documentationは、UIViewsトランスフォームがアイデンティティ変換でないとすぐに、フレームプロパティが定義されず、使用されるべきではないので、CGRect endFrame = ...に依存しないようにします。

品質を変更したい場合は、変換をIDに設定し、フレームを拡大/縮小してから変換を再適用して回転を維持します。それはうまくいくはずです。

+0

こんにちは、何を意味するか "をアイデンティティに変換する" のでしょうか?また、フレームをどのようにスケールするのですか?ピンチジェスチャースケールを使ってCGAffineTransformScaleではなくframe.size.width/heightを操作することを意味しますか?おかげで – user339946

+0

恒等変換は基本的に何もしない変換、スケール、回転またはスキューしません変換です。私はフレームサイズを操作することを意味しますが、フレームサイズを操作することを意味しますが、スケーリングと再適用の前にview.centerを保存することによってビューを適切に配置し直す必要があることに留意してください。 – Ahti

1

scrollviewのサブビューとしてimageviewを追加し、viewtobezoomedをimageviewとして要求するscrolviewのデリゲートを指定します。それは簡単に解決します。

http://developer.apple.com/library/ios/documentation/uikit/reference/uiscrollviewdelegate_protocol/Reference/UIScrollViewDelegate.html#//apple_ref/occ/intfm/UIScrollViewDelegate/viewForZoomingInScrollView

+0

返信ありがとうございます画像に、正しい?全体的にサイズを拡大しないでください。 – user339946

+0

scrolviewのズームスケールがあなたにスケールを与えます。ユーザーが適切な縮尺を決定すると、それを画像に適用することができます。結局のところ、私たちは単にユーザーに感じを与える必要がありますか? –

関連する問題