强制应用程序旋转甚至锁定

时间:2014-01-29 18:06:19

标签: ios objective-c rotation orientation cgaffinetransform

即使设备储物柜已开启,我也必须开发一款可以旋转的应用。 从设备检索当前方向非常简单(使用CoreMotion[[UIDevice currentDevice].orientation]使用NSTimer)。

但现在我希望能够让我的所有应用程序都旋转。

我是否必须对visibleViewController进行转换,还是有另一种方法更简单?

如果我选择第一个解决方案,我会在每个计时器步骤或CoreMotion刷新时调用此方法:

CGAffineTransform transform;
switch (orientation) {
    case UIInterfaceOrientationPortrait:
        transform = CGAffineTransformMakeRotation(degreesToRadian(0));
    case UIInterfaceOrientationPortraitUpsideDown:
        transform = CGAffineTransformMakeRotation(degreesToRadian(180));
    case UIInterfaceOrientationLandscapeLeft:
        transform = CGAffineTransformMakeRotation(degreesToRadian(90));
    case UIInterfaceOrientationLandscapeRight:
        transform = CGAffineTransformMakeRotation(degreesToRadian(-90));
}

[UIView animateWithDuration:0.3f animations:^{
    self.view.window.transform = transform;
}];

但它只工作一次。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

所以我找到了一种方法来实现变换:

self.view.window.layer.transform = CATransform3DMakeRotation(orientationAngle, 0, 0.0, 1.0);
self.view.window.frame = [[UIScreen mainScreen] bounds];

然后我注意到我的所有控制器并管理它们的帧。