更改特定UIViewController子类的设备方向

时间:2009-02-11 14:50:10

标签: cocoa-touch

我想在特定视图出现时更改设备方向。我得到了很多关于当方向改变时要采取的行动的信息,但我没有得到如何以编程方式改变设备方向。请注意,我的其他视图必须保持默认方向。

2 个答案:

答案 0 :(得分:0)

 [[UIDevice currentDevice] setOrientation:UIDeviceOrientationPortrait];

请注意,这不是API文档中UIDevice框架的一部分,因此Apple可能拒绝使用此文档的应用程序。

答案 1 :(得分:0)

您可以使用CGAffineTransforms而不是私有API更改视图的方向。您必须更改UIStatusBarOrientation方向以匹配新方向,并找到旋转视图的角度:

例如,如果您的视图处于横向方向,并且您希望它以纵向方式返回。

CGAffineTransform transform = CGAffineTransformIdentity;

switch ([[UIApplication sharedApplication] statusBarOrientation]) {

    case UIInterfaceOrientationLandscapeLeft:
        transform = CGAffineTransformMakeRotation(M_PI_2);
        break;

    case UIInterfaceOrientationLandscapeRight:
        transform = CGAffineTransformMakeRotation(-M_PI_2);
        break;

    default:
        break;
}

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];

[UIView animateWithDuration:0.2f animations:^ {

    [view setTransform:transform];
}];

[view setFrame:CGRectMake(0, 0, 320, 480)];
[view setNeedsLayout];