一尘不染

检测iOS UIDevice方向

swift

我需要检测设备何时处于纵向方向,以便可以触发特殊的动画。但是我不希望我的观点自动旋转。

将设备旋转到纵向时,如何覆盖自动旋转的视图?我的应用程序仅需要以横向显示视图,但是如果我想能够检测到纵向旋转,似乎还需要支持纵向。


阅读 212

收藏
2020-07-07

共1个答案

一尘不染

当应用程序加载或视图加载时,尝试执行以下操作:

[[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的所有情况下,当您添加观察者时,还应在适当的时间(可能但并非总是在视图出现/消失时)将其移除。您只能具有“成对”的观察/取消观察代码。如果不这样做,该应用程序将崩溃。选择观察/不观察的位置超出了此质量检查的范围。但是,您必须具有“取消观察”才能与上面的“观察”代码匹配。

2020-07-07