2

UIImageView内部で回転しようとしていますが、UIScrollViewズーム/ズーム解除しようとすると、回転が 0 に戻ります

私のローテーションのコードは次のとおりです。

- (void)rotateImage:(UIRotationGestureRecognizer*)rotate
  {
  if ([rotate state] == UIGestureRecognizerStateEnded)
  {
    rotateAngle += [spin rotation];
    return;
  }

  myView.transform = CGAffineTransformMakerotation(rotateAngle + [rotate rotation]);
}

に関してはUIScrollView、 myView を返すだけです-(UIView*)viewForZoomingInScrollView:

そして最後の情報として、私のインターフェイス ビルダーでは、これが私のビュー スタックです。

UIImageView
UIView (myView)
UISCrollView

つまり、 と のUIViewUIImageViewUIScrollView

4

2 に答える 2

4

ピンチジェスチャーを使用してズームを処理することをお勧めします。よりすっきりと均一に見えます。ビューにピンチ ジェスチャを追加します。ズームするには、セレクターメソッドに次のコードを追加します

   - (void)handlePinch:(UIPinchGestureRecognizer *)recognizer
{


   myView.transform = CGAffineTransformScale(recogniser.view.transform, recognizer.scale, recognizer.scale);
recognizer.scale = 1;

}

回転用、

    -(void)handleRotate:(UIRotationGestureRecognizer *)rec
{


    myView.transform = CGAffineTransformRotate(rec.view.transform, rec.rotation);
    rec.rotation = 0;
}

両方のジェスチャのデリゲートとして self を宣言し、次のデリゲート メソッドを実装していることを確認してください。

 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

myView を削除する

 -(UIView*)viewForZoomingInScrollView:  

私のソリューションを実装する前の方法。スクロールビューではなく、ジェスチャーだけでズームを処理しましょう。:) 頑張ってください

于 2012-12-14T14:08:09.243 に答える