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

创建一个基于身份的新变换。缩放是转换的一部分——你想使用

CGAffineTransformRotate

而是将旋转添加到现有的缩放变换中。

于 2012-08-05T16:56:25.770 回答