1

(の代わりに)UISliderをズームするための があり、 を使用しています。どちらも独立して正常に動作します。しかし、回転を実行してズームインまたはズームアウトすると、回転スケールが失われるため、奇妙な動作になります(それが私の推測です!) これを修正するにはどうすればよいですか?imageViewUIPinchGestureUIRotationGestureimageview

数日以来、これに苦労しているこの数学の問題が苦手で、フォーラムを検索しても解決策が見つかりませんでした。親切に私を助けてください:)

ズームの場合:(ここでは、わからないので変換を処理していません)

-(void)scale:(UISlider *)sender
{
      float sliderValue = [sender value];
    CGRect newFrame = placeRing.frame;
    newFrame.size = CGSizeMake(sliderValue, sliderValue);
    placeRing.frame = newFrame;
}

回転の場合:

- (void)twoFingersRotate:(UIRotationGestureRecognizer *)recognizer
{
    isRotated = TRUE;
    if ([recognizer state] == UIGestureRecognizerStateBegan || [recognizer state] == UIGestureRecognizerStateChanged) {
         rotation= recognizer.rotation;
    rotatedTransform = CGAffineTransformRotate([placeRing transform], [recognizer rotation]);
        placeRing.transform = rotatedTransform;
       [recognizer setRotation:0];
    }

   }
4

1 に答える 1

1

回転は、ビューのサイズ変更に使用しているフレーム プロパティを無効にする変換を適用します。範囲と中心のプロパティを使用してズームします。

次の警告ボックスを参照してください: http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816

-(void)scale:(UISlider *)sender
{
    float sliderValue = [sender value];
    placeRing.bounds = CGRectMake(0, 0, sliderValue, sliderValue);
}
于 2013-02-23T11:15:21.977 に答える