1

UISlidersを介してスケーリングおよび回転しているイメージビューがあります。これが私がそうする方法です:

- (IBAction)sizeSlider:(UISlider *)sender
{
    int SCALE_MAX = 200;
    int SCALE_MIN = 10;
    CGAffineTransform transform = image.transform;
    float scale = sqrt(transform.a*transform.a + transform.c*transform.c);
    if (scale > SCALE_MAX)
        image.transform = CGAffineTransformScale(transform, SCALE_MAX/scale*sender.value, SCALE_MAX/scale*sender.value);
    else if (scale < SCALE_MIN)
        image.transform = CGAffineTransformScale(transform, SCALE_MIN/scale*sender.value, SCALE_MIN/scale*sender.value);
}

- (IBAction)angleSlider:(UISlider *)sender
{  
    CGAffineTransform t = CGAffineTransformMakeRotation(sender.value);
        image.transform = t;
}

これは機能しますが、画像ビューが元のサイズから拡大縮小されている場合、画像を回転すると元のサイズにリセットされます。どうすればこれを防ぐことができますか?

4

2 に答える 2

1

ローテーションでは、スケールと同様のアプローチを使用します。意味、使用:

CGAffineTransformRotate(image.transform, theAngle);
于 2012-08-05T16:43:44.320 に答える
0
CGAffineTransformMakeRotation

IDに基づいて新しい変換を作成します。スケーリングは変換の一部です-使用したい

CGAffineTransformRotate

代わりに、既存のスケーリングされた変換に回転を追加します。

于 2012-08-05T16:56:25.770 に答える