2012-04-30 66 views
1

我的iOS已通過NSNotificationCenter註冊設備方向更改通知,並且具有響應不同方向更改的方法。調用以下代碼可以在將手機旋轉到「橫向左側」時更改視圖的方向和位置。CGAffineRotation傾斜圖像照片

camAngle = [(NSNumber *)[_cameraToggleButton valueForKeyPath:@"layer.transform.rotation.z"] floatValue]; 
      camDegrees = (RADIANS_TO_DEGREES(camAngle)); 
      if (!(camDegrees == 90)) { 
       _cameraToggleButton.alpha = 0.0; 
       _cameraToggleButton.transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(90)); 
       _cameraToggleButton.frame = CGRectMake(274, 350, 66, 54); 
       [UIView beginAnimations:nil context:nil]; 
       [UIView setAnimationDuration:0.4]; 
       [UIView setAnimationCurve:UIViewAnimationCurveLinear]; 
       _cameraToggleButton.alpha = 1.0; 
       [UIView commitAnimations]; 
      } 

而我的公式轉換弧度度:

#define RADIANS_TO_DEGREES(radians) ((radians) * (180.0/M_PI)) 
#define DEGREES_TO_RADIANS(angle) ((angle)/180.0 * M_PI) 

的觀點正確旋轉,並假設在屏幕上的正確位置,但圖像的側面突然壓扁,使圖像看上去冷凝。只有在將手機旋轉到橫向位置(左側或右側)時纔會發生這種情況。旋轉倒置或返回到肖像翻譯和旋轉視圖很好,基本上相同的代碼。什麼可能導致圖像在橫向位置的偏斜?

+0

此圖片是否有autoResizingMasks集? – CodaFi

+0

不,它沒有。 –

+0

更重要的是,旋轉視圖的'contentMode'是什麼?如果它是'UIViewContentModeScaleToFill',可以解釋你的問題的一部分。 – warrenm

回答

2

在對其設置旋轉變換後,您不應設置_cameraToggleButtonframe。您設置的旋轉後要重新定位_cameraToggleButton,你應該改變它的center像這樣:

_cameraToggleButton.center = CGPointMake(274, 350); 

而且,別人的建議,使用UIViewContentModeScaleAspectFit代替UIViewContentModeScaleToFill

+0

非常感謝,男士! –