2012-08-05 213 views
1

我有一個imageview,我縮放和旋轉通過UISliders。這是我如何做到這一點:CGAffineTransform縮放和旋轉

- (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; 
} 

這工作,但如果ImageView的已經從原來的大小縮放,然後旋轉圖像重置爲原始大小。我怎樣才能防止這一點?

回答

1

在您的旋轉中使用您的比例尺的類似方法。這意味着,使用方法:

CGAffineTransformRotate(image.transform, theAngle); 
0
CGAffineTransformMakeRotation 

創建一個新的基於身份的變換。縮放是變換的一部分 - 您想要使用

CGAffineTransformRotate 

而是將旋轉添加到現有的縮放變換。