2013-01-23 2 views
0

다음 코드를 사용하여 일부 CALayers 함유 아이폰에있는 UIView에서 320x320 (블랙)의 회전을 실험 하였다 M_PI_2은 PI/2 (math.h)임을누군가 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]; 
} 

참고. 이 코드는 뷰를 180 ° 회전시킵니다. 그러나 M_PI_2로 변경하면 (* 2 없음) 검은 색 UIView가 사라지고 내용이 오른쪽 아래로 이동 한 다음 대부분 화면 밖으로 회전합니다. 왜 이런거야? 나는 왜보기가 단지 90도 회전하지 않는지에 관해서 난처한 상황에 처해있다.

+1

'M_PI_2 * 2'는 꽤 바보입니다. 그냥'M_PI'를 사용하십시오. –

+0

물론, 나는 이상한 행동을 이해하려고 애쓰는 가치들을 망쳐 놓고있다. – ahwulf

+0

내가 [self.layer setAffineTransform : rr]로 변경하면; 그것은 작동합니다. 기묘한. – ahwulf

답변

1

transformaffineTransform과 다릅니다. transformCATransform3D 구조체를 필요로하므로 편리 메소드 setAffineTransform을 사용해야합니다.

편집 그래서 self가있는 UIView이며, 내 위의 대답은 관련이없는 것 같다. [UIView setAnimationBeginsFromCurrentState:YES]을 사용해보세요.

+0

흠, uiView.transform은 CGAffineTransform입니다. 여러분이 말하는 것은 layer.transform에 해당됩니다. 차이가 왜 이상한 지? – ahwulf

+0

오. 'self'가 UIView 인 경우 내 대답은 이해가되지 않습니다. 내 대답을 업데이트 할게. –

관련 문제