在Cocoa Touch中旋转UIView

时间:2009-08-29 02:13:22

标签: iphone cocoa-touch uiview rotation

我见过其他有过这个问题的人,但大多数回复都没有在最新的3.0版iPhone OS上运行。无论如何,我想知道如何在没有来自加速度计的任何输入的情况下以编程方式旋转UIView。到目前为止我找到的代码:

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

然而,这对于UIView(在我的测试中)不起作用。有什么东西我必须做我的AppDelegate才能使这个/其他代码运行,或者有更好的方法来做同样的事情吗?

感谢您的帮助!

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

我取得了成功:

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

答案 2 :(得分:0)

不确定这是否被视为私有API,因此您可能不想使用它,但如果您想在不倾斜设备的情况下强制更改方向,则可以尝试调用:

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

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