横向模式仅适用于iPhone或iPad

时间:2010-04-15 17:59:55

标签: iphone objective-c cocoa-touch uikit ipad

我想创建一个不使用纵向模式的应用程序。

我不确定是否需要编辑plist或者除了plist之外还有代码

4 个答案:

答案 0 :(得分:47)

Code found here

  

以横向模式启动

     

iPhone OS中的应用程序正常   以纵向模式启动以匹配   主屏幕的方向。如果你   有一个运行在两者中的应用程序   肖像和风景模式,你的   应用程序应始终启动   肖像模式最初然后让   它的视图控制器旋转   根据需要界面   设备的方向。如果你的   应用程序以横向模式运行   但是,你必须执行   以下步骤使其在a中启动   最初的风景定位。

     
      
  • 在应用程序的Info.plist文件中,添加UIInterfaceOrientation
      键并将其值设置为
      景观模式。对于景观
      方向,你可以设置值
      这个关键是什么   UIInterfaceOrientationLandscapeLeft
      或
      UIInterfaceOrientationLandscapeRight.

  •   
  • 以横向模式布置您的观点,并确保他们的观点   自动调整选项已设置   正确。

  •   
  • 覆盖视图控制器的shouldAutorotateToInterfaceOrientation:   方法,仅对于
    返回YES   期望的景观方向和没有   用于纵向方向。

  •   

答案 1 :(得分:29)

要使您的应用横向模式,您应使用“支持的界面方向”。 (Targets -> YourApp -> Supported Interface Orientations -> Landscape Left & Right

Supported Interface Orientations

您还应该在Info.plist键上添加值Supported interface orientationsLandscape (left home button),从而在应用的Landscape (right home button)文件(Info.plist file)中设置应用的方向。 row's

您可以使用willRotateToInterfaceOrientation和/或didRotateFromInterfaceOrientation来处理方向更改。


shouldAutorotateToInterfaceOrientation已弃用 iOS 6 而已弃用。

UIDeviceOrientationLandscapeLeft/Right返回shouldAutorotateToInterfaceOrientation会使您的应用“风景”:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

也可能更改您应用的Info.plistView Orientation(如上所述)。


此外,我建议您将视图的方向更改为属性检查器中的Landscapelandscape

答案 2 :(得分:26)

您也可以将其全部缩短为

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}

答案 3 :(得分:10)

编辑plist以仅支持横向,然后确保在每个uiviewcontroller / uitabbar等中shouldAutoRotateToInterfaceOrientationreturnreturn ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (interfaceOrientation == UIInterfaceOrientationLandscapeRight));