2013-01-23 87 views
0

我用旋轉320×320的UIView(黑色)上使用以下代碼包含一些CALayers iPhone試驗:有人可以解釋UIView奇怪的旋轉?

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:2]; 
    CGAffineTransform rr=CGAffineTransformMakeRotation(M_PI_2*2); 
    self.transform=rr; 
    [UIView commitAnimations]; 
} 

注意M_PI_2是PI/2(math.h中)。此代碼將視圖旋轉180°。但是,如果我將其更改爲M_PI_2本身(無* 2),黑色的UIView消失,內容下移和向右,然後旋轉屏幕外的大部分。爲什麼是這樣?我很難理解爲什麼視圖不會旋轉90°。

+1

'M_PI_2 * 2'是非常愚蠢的,只是使用'M_PI'。 –

+0

當然,我正在試圖理解奇怪的行爲。 – ahwulf

+0

如果我將它改爲[self.layer setAffineTransform:rr];那麼它的工作。奇怪的。 – ahwulf

回答

1

因爲,transform是從affineTransform不同。 transform需要一個CATransform3D結構,所以你應該使用的簡便方法,而不是setAffineTransform

編輯

如此看來self是一個的UIView和我上面的回答是無關緊要的。嘗試使用[UIView setAnimationBeginsFromCurrentState:YES]

+0

嗯,該uiView.transform是CGAffineTransform,你說的是對的layer.transform如此。爲什麼差異很奇怪。 – ahwulf

+0

哦。如果'self'是一個UIView,那麼我的答案是沒有意義的。我會更新我的答案。 –

相關問題