我有一个imageview,我正在通过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;
}
这样可行,但是如果图像视图已从其原始大小缩放,则旋转图像会将其重置为原始大小。我该如何防止这种情况?
答案 0 :(得分:1)
在轮换中使用与刻度相似的方法。意思是,使用:
CGAffineTransformRotate(image.transform, theAngle);
答案 1 :(得分:0)
CGAffineTransformMakeRotation
根据身份创建新的转换。缩放是转换的一部分 - 您想要使用
CGAffineTransformRotate
相反,它将旋转添加到现有的缩放变换。