即使设备储物柜已开启,我也必须开发一款可以旋转的应用。
从设备检索当前方向非常简单(使用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;
}];
但它只工作一次。 有什么想法吗?
答案 0 :(得分:0)
所以我找到了一种方法来实现变换:
self.view.window.layer.transform = CATransform3DMakeRotation(orientationAngle, 0, 0.0, 1.0);
self.view.window.frame = [[UIScreen mainScreen] bounds];
然后我注意到我的所有控制器并管理它们的帧。