ios 6中的定位问题

时间:2012-10-23 05:11:42

标签: iphone ios6

我在通用应用程序中工作,直到ios 5,但在ios 6中有定向问题。我的应用程序仅处于纵向模式。问题是当我的ipad处于横向模式时,如果我启动我的应用程序而不是方向不会改变为protrait。所以请帮我一些代码,这样我就可以在app启动之前强制我的应用程序处于protrait模式,而不依赖于设备的方向

3 个答案:

答案 0 :(得分:4)

首先,我们必须在Targets-> Summary ...

中设置支持的方向

在iOS6.0中,应该不推荐使用onAutorotateToInterfaceOrientation方法。所以,我们必须使用shouldAutorotate方法而不是这个方法。

使用supportedInterfaceOrientations方法,如果我们想要所有方向,我们必须设置我们想要的方向,如UIInterfaceOrientationMaskAll

答案 1 :(得分:2)

这种情况正在发生,因为Apple改变了管理UIViewController方向的方式。在Ios6中,Oreintation处理不同。在iOS6容器(例如UINavigationController)中,不要咨询他们的孩子以确定他们是否应该自动旋转。默认情况下,应用程序和视图控制器支持的界面方向设置为iPad惯用语的UIInterfaceOrientationMaskAll和iPhone惯用语的UIInterfaceOrientationMaskAllButUpsideDown.So设备默认情况下更改方向。

因此需要执行一些步骤。

1 - 从此处设置方向

enter image description here

2 - 将FirstViewController中的此代码添加到RootViewController

  @implementation UINavigationController (RotationIn_IOS6)
   //Here UINavigationController is the RootViewController added To the Window

 -(BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}

 -(NSUInteger)supportedInterfaceOrientations
{
   return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}

 - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
     return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}

@end

**将以下方法放在ViewController中,在IOS6中引入允许Oreintation Change **

  - (BOOL)shouldAutorotate
 {

   return NO;

  }

/*Return the Number of Oreintation going to supported in device*/

 - (NSUInteger)supportedInterfaceOrientations
  {
return  (UIInterfaceOrientationMaskPortrait |     UIInterfaceOrientationMaskPortraitUpsideDown );

 }

 // Returns interface orientation masks.

  - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
  {
      return  (UIInterfaceOrientationPortrait | UIInterfaceOrientationPortraitUpsideDown      ) ;

 }

答案 2 :(得分:0)

ViewController.m中,您必须定义支持的方向。在IOS 6中,这是处理支持方向的方法。

- (NSUInteger)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskAll;
}

UIInterfaceOrientationMaskAll表示它将支持view的所有方向。

另请阅读Apple文档 - Doc about Orientation