我需要检测设备何时处于纵向方向,以便可以触发特殊的动画。但是我不希望我的观点自动旋转。
将设备旋转到纵向时,如何覆盖自动旋转的视图?我的应用程序仅需要以横向显示视图,但是如果我想能够检测到纵向旋转,似乎还需要支持纵向。
当应用程序加载或视图加载时,尝试执行以下操作:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:[UIDevice currentDevice]];
然后添加以下方法:
- (void) orientationChanged:(NSNotification *)note { UIDevice * device = note.object; switch(device.orientation) { case UIDeviceOrientationPortrait: /* start special animation */ break; case UIDeviceOrientationPortraitUpsideDown: /* start special animation */ break; default: break; }; }
以上内容可让您注册设备的方向更改,而无需启用视图的自动旋转。
在iOS的所有情况下,当您添加观察者时,还应在适当的时间(可能但并非总是在视图出现/消失时)将其移除。您只能具有“成对”的观察/取消观察代码。如果不这样做,该应用程序将崩溃。选择观察/不观察的位置超出了此质量检查的范围。但是,您必须具有“取消观察”才能与上面的“观察”代码匹配。