2009-08-29 70 views
19

我见过其他人有这个问题,但大多数的反应是不工作的iPhone操作系统的最新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

使用M_PI而不是3.14159 – 2010-07-05 14:09:39

+32

并使用M_PI_2而不是M_PI/2 – Allyn 2010-11-12 21:36:39

1

我曾与成功:

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

嗨马可:在上面的代码中,“角度”是什么? – PF1 2009-08-30 22:07:20

+1

此外,即使我已经导入了QuartzCore框架,这似乎也无法建立。 – PF1 2009-08-30 22:15:23

+0

角度是辐射体中视角将被旋转的角度。由于其他错误,它不会建立。构建日志是什么意思? – Marco 2009-08-31 09:29:11

0

不知道这是否被认为是私有的API,所以你可能不希望使用它,但如果你想强制改变方向而不倾斜设备,您可以尝试拨打电话:

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

我还没有测试过它仍然适用于3.1.2。尽管我知道它适用于3.0。