2013-05-29 82 views
0

我第一次打開我的iphone會轉動按鈕。我第二次打開iPhone失敗。CGAffineTransformMakeRotation(M_PI_2)在控制檯中產生錯誤:CGAffineTransformInvert:單數矩陣

- (void)configureViewsLandscapeMode 
{ 
    UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation; 

    if (deviceOrientation == UIDeviceOrientationLandscapeLeft) { 

     [self.button setTransform:CGAffineTransformMakeRotation(M_PI_2)]; 

    } else if (deviceOrientation == UIDeviceOrientationLandscapeRight) { 


     [self.button setTransform:CGAffineTransformMakeRotation(-M_PI_2)]; 

    } 
} 

我讀別人的答案相似:

UIView scale to 0 using CGAffineTransformMakeScale

CGAffineTransformInvert: singular matrix

我開始與IOS,我不明白的問題。我想了解比擁有一個解決方案的更多的問題,我將不勝感激一些指導

回答

1

當進行旋轉動畫,確保你不改變視圖frame。例如,當使用自動修復或者當您嘗試明確地更改frame時會發生這種情況。

如果您同時更改框架和變形,特別是在動畫內部,iOS會嘗試生成從原始位置到目標位置的動畫。這涉及到一些矩陣計算,並且如果涉及多個更改(例如frame),則可能以錯誤結束。

1

試試這個:

- (void)configureViewsLandscapeMode 
{ 
    UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation; 

    if (deviceOrientation == UIDeviceOrientationLandscapeLeft) { 

     [self.button setTransform:CGAffineTransformRotate(CGAffineTransformIdentity, M_PI_2)]; 

    } else if (deviceOrientation == UIDeviceOrientationLandscapeRight) { 


     [self.button setTransform:CGAffineTransformRotate(CGAffineTransformIdentity, -M_PI_2)]; 

    } 
} 
相關問題