2009-08-29 3 views
19

이 질문을 한 다른 사람들을 보았지만 대부분의 응답이 iPhone OS의 최신 3.0 빌드에서 작동하지 않습니다. 어쨌든, 나는 가속도계의 입력없이 UIView를 프로그램 방식으로 회전시킬 수 있는지 궁금합니다. 내가 지금까지 찾은 코드 :코코아 터치에서 UIView 회전

CGAffineTransform transform = CGAffineTransformMakeRotation(3.14159/2); 
view.transform = transform; 
CGRect contentRect = CGRectMake(-80, 80, 480, 320); 
view.bounds = contentRect; 

그러나 이것은 (내 테스트에서) UIView에서는 작동하지 않습니다. 이/다른 코드가 작동하도록 AppDelegate를 수행해야하는 작업이 있습니까? 아니면 동일한 작업을 수행하는 더 좋은 방법이 있습니까?

도움 주셔서 감사합니다.

답변

40

CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI_2); 
self.view.transform = transform; 

// Repositions and resizes the view. 
CGRect contentRect = CGRectMake(0,0, 480, 320); 
self.view.bounds = contentRect; 
+14

3.14159 –

+32

대신 M_PI 사용 M_PI/2 대신 M_PI_2 사용 – Allyn

1

은 그 성공했다 : 이것은 나를 위해 작동

CATransform3D rotationTransform = CATransform3DIdentity; 
[view.layer removeAllAnimations]; 
rotationTransform = CATransform3DRotate(rotationTransform, angle, 0.0, 0.0, 1); 
view.layer.transform = rotationTransform; 
+0

위의 코드에서 "각도"는 무엇입니까? – PF1

+1

또한 QuartzCore 프레임 워크를 가져 왔지만 빌드 할 수없는 것 같습니다. – PF1

+0

각도는 방사형에서 뷰가 회전되는 각도입니다. 다른 오류로 인해 빌드되지 않습니다. 빌드 로그 란 무엇입니까? – Marco

0

확실하지 이것은 당신이 그것을 사용하지 수 있도록, 개인 API로 간주하지만, 당신이 원하는 경우 경우 기기를 기울이지 않고 방향을 바꾸려면 다음을 호출 해보십시오.

[[UIDevice currentDevice] performSelector:@selector(setOrientation:) 
         withObject:(id)UIInterfaceOrientationLandscapeLeft]; 

테스트를 거치지 않았습니다. 그것은 여전히 ​​3.1.2에서 작동합니다. 3.0에서 작동한다는 것을 알지만.

관련 문제