IOS6如何收听界面方向。不是设备方向

时间:2012-11-01 15:13:10

标签: iphone ios rotation ios6

我需要知道方向从纵向切换到横向,反之亦然。 如果我选择收听UIDeviceOrientationDidChangeNotification我会面朝上,面朝下等,但我只需要在界面轮换时运行代码。

我可以http://the.ichibod.com/kiji/how-to-handle-device-rotation-for-uiviews-in-ios/

- (void)deviceOrientationDidChange:(NSNotification *)notification {

 //Obtaining the current device orientation
  UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

 //Ignoring specific orientations
  if (orientation == UIDeviceOrientationFaceUp || orientation == UIDeviceOrientationFaceDown     || orientation == UIDeviceOrientationUnknown || currentOrientation == orientation) {
   return;
  }

  [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(relayoutLayers) object:nil];
  //Responding only to changes in landscape or portrait
  currentOrientation = orientation;
}

最好的方法是什么?

1 个答案:

答案 0 :(得分:2)

在使用设备方向时,我遇到了类似的问题。它有向上,向下,向左和向右但也是未知的,另一个我还没弄清楚它是什么意思(enum上的int 5,0是Unknown)。无论如何,我最终采取的是检测状态栏方向。对于用户所看到的内容,这仍然更加一致。

UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];

希望这有帮助。