我想根据对我的视图控制器的 shouldAutorotateToInterfaceOrientation 调用允许方向旋转。但是,我希望它立即这样做并跳过旋转动画(导致在整个视图旋转时角落显示黑色旋转动画的动画。
有谁知道是否有办法指定您希望它立即发生(没有动画)?
我想根据对我的视图控制器的 shouldAutorotateToInterfaceOrientation 调用允许方向旋转。但是,我希望它立即这样做并跳过旋转动画(导致在整个视图旋转时角落显示黑色旋转动画的动画。
有谁知道是否有办法指定您希望它立即发生(没有动画)?
为了做你想做的事,你必须手动旋转(和调整)你的视图。没有您可以更改的属性来轻松地做您想做的事。下面是注册设备旋转事件的代码。
- (void)viewDidLoad {
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:)
name:UIDeviceOrientationDidChangeNotification object:nil];
//Whenever the device orientation changes, orientationChanged will be called
}
- (void)orientationChanged:(NSNotification *)notification
{
UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;
//Based upon which orientation the device is in, update your View rotations.
//A simple view.transform = CGAffineTransformMakeRotation(whatever); will work well.
}
我相信您应该完全删除 shouldAutoRotateToInterfaceOrientation: 函数。您还应该[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
在视图卸载时调用。
不需要手动旋转。有一种方法可以禁用旋转动画。
以下是如何做到这一点的答案:https ://stackoverflow.com/a/6589568/894671