如何禁用横向方向?

时间:2012-08-02 20:51:59

标签: iphone objective-c ios xcode orientation

我正在制作iPhone应用程序,我需要它处于纵向模式,因此如果用户侧向移动设备,它不会自动旋转。我怎么能这样做?

9 个答案:

答案 0 :(得分:51)

要为特定的视图控制器禁用方向,您现在应该覆盖supportedInterfaceOrientationspreferredInterfaceOrientationForPresentation

- (NSUInteger) supportedInterfaceOrientations {
    // Return a bitmask of supported orientations. If you need more,
    // use bitwise or (see the commented return).
    return UIInterfaceOrientationMaskPortrait;
    // return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
}

- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation {
    // Return the orientation you'd prefer - this is what it launches to. The
    // user can still rotate. You don't have to implement this method, in which
    // case it launches in the current orientation
    return UIInterfaceOrientationPortrait;
}

如果您的目标是iOS 6之前的版本,则需要使用shouldAutorotateToInterfaceOrientation:方法。通过更改何时返回yes,您将确定它是否将旋转到所述方向。这只会允许正常的纵向方向。

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

    // Use this to allow upside down as well
    //return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);
}

请注意,iOS 6.0中已弃用shouldAutorotateToInterfaceOrientation:

答案 1 :(得分:38)

Xcode 5及以上

  • 在左侧边栏的Project Navigator中单击您的项目以打开项目设置
  • 转到常规标签。
  • 设备方向
  • 下的部署信息部分中取消选中您不想要的选项

screenshot showing where to click

答案 2 :(得分:28)

Xcode 4及以下

对于那些错过它的人:您可以使用项目设置屏幕来修复整个应用程序的方向(无需覆盖每个控制器中的方法):

enter image description here

就像切换支持的界面方向一样简单。您可以点击左侧面板中的项目>应用目标>摘要标签。

答案 3 :(得分:1)

Swift 3 如果您有一个navigationController,则将其子类化为此类(仅限肖像):

$sql->bind_param("si",$newname,$user_id);

答案 4 :(得分:1)

如果要为 iPhone和iPad 禁用横向方向。

转到目标,然后转到常规标签。请参见下面的屏幕,并取消选择左侧景观和右侧景观

enter image description here

在这种情况下,仅iPhone横向模式将被禁用,而不是iPad。 对于iPad,所有模式都可用。如果要从Universal到iPad选择设备选项。它看起来像这样。参见以下屏幕。

enter image description here

现在,您需要取消选择iPad上除<人像>人像以外的所有模式。请参见下面的屏幕截图。

enter image description here

现在,您已成功所有设备禁用了除人像以外的所有模式。

答案 5 :(得分:0)

从您的班级中删除方法shouldAutorotateToInterfaceOrientation也完全有效。如果你不打算旋转,那么在你的课程中使用这个方法是没有意义的,代码越少越好,保持干净。

答案 6 :(得分:0)

Xcode 8,Xcode 9,Xcode 10及更高版本

enter image description here

答案 7 :(得分:0)

适用于iPhone和iPad的最简单解决方案(通用)-在 info.plist 文件或 Project-> Info-> Custom iOS Target Properties 中删除不必要的方向

只需从列表中添加或删除定位项:

  • 受支持的界面方向(用于 iPhone
  • iPad
  • 的受支持的界面方向(iPad)

enter image description here

答案 8 :(得分:0)

如果您希望应用程序仅在纵向模式下运行,

在您的viewDidLoad方法下面,复制下面的代码行

override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
   get {
      return .portrait
   }
}

这将锁定您的应用程序的横向模式。同样,通过将.portrait替换为.landscape,将以横向模式运行您的应用程序。

如果未指定,您的应用程序将在两种模式下运行。

或者,您可以如下所示从Xcode Builder锁定方向。

enter image description here