2013-08-23 96 views
0

我有兩個滑塊 - 一個用於更改圖像大小,另一個用於旋轉此圖像。我的imageview是60x60。問題是我使用CGAffineTransformMakeRotation旋轉圖像,但是當我嘗試調整它的大小後(例如,從60x60到65x65使用滑塊),它的行爲奇怪 - 圖像視圖的框架已更改爲80x2。我怎樣才能避免這種情況?這是我對於調整圖像大小滑塊代碼:旋轉改變UIImageView框架。如何避免這種情況?

-(IBAction)imageSliderAction:(UISlider *)sender 
{ 
    NSUInteger value = sender.value; 
    float oldCenterX = logoImageView.center.x; 
    float oldCenterY = logoImageView.center.y; 
    newWidth = value; 
    newHeight = value; 
    CGRect frame = [logoImageView frame]; 
    frame.size.width = newWidth; 
    frame.size.height = newHeight; 
    [logoImageView setFrame:frame]; 
    logoImageView.center = CGPointMake(oldCenterX, oldCenterY); 
} 

這裏是我的旋轉滑蓋代碼:

-(IBAction)rotationSliderAction:(UISlider *)sender 
{ 
    NSUInteger angle = sender.value; 
    if (sender.value >= 1) 
    { 
     CGAffineTransform rotate = CGAffineTransformMakeRotation(angle/180.0 * 3.14); 
     [logoImageView setTransform:rotate]; 
    } 
    if (sender.value <= 0) 
    { 
     CGAffineTransform rotate = CGAffineTransformMakeRotation((360 + sender.value)/180.0 * 3.14); 
     [logoImageView setTransform:rotate]; 
    } 
} 

我怎樣才能避免在旋轉時autochanging幀的寬度和高度?因爲之後我無法正確調整圖像大小。

回答

3

UIView reference

警告:如果變換屬性不是恆等變換,這個屬性的 值是不確定的,因此應被忽略。

如果你想改變的觀點是,非平凡的尺寸轉換,你應該做的是通過改變它的bounds屬性(查看中心將保持不變,所以你不需要任何額外的邏輯,以保持它的位置):

[logoImageView setBounds:CGRectMake(0,0,sender.value, sender.value)]; 
+0

問題解決!我知道這是具有界限屬性的東西,但不知道該怎麼做。謝謝,我的朋友。 – scourGINHO

相關問題