0

我在通用应用程序中工作,直到 ios 5 都可以正常工作,但在 ios 6 中存在方向问题。我的应用程序仅处于纵向模式。问题是当我的 ipad 处于横向模式时,如果我启动我的应用程序,则方向不会更改为 protrait。所以请帮助我一些代码,以便我在应用程序启动之前强制我的应用程序处于 protrait 模式,仅独立于设备的方向

4

3 回答 3

4

首先,我们必须在 Targets->Summary... 中设置支持的方向。

在 iOS6.0 中 shouldAutorotateToInterfaceOrientation 方法已被弃用。所以,我们必须使用 shouldAutorotate 方法来代替这个方法。

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

于 2012-10-24T06:09:18.037 回答
2

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

所以需要执行一些步骤。

1 - 从这里设置方向

在此处输入图像描述

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

  @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 中引入 Allow 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      ) ;

 }
于 2012-10-23T05:19:57.293 回答
0

在你的ViewController.m你将不得不定义你支持的方向。在 IOS 6 中,这是处理支持的方向的方法。

- (NSUInteger)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskAll;
}

UIInterfaceOrientationMaskAll意味着它将支持view.

另请阅读 Apple Doc - Doc about Orientation

于 2012-10-23T05:33:02.273 回答