我正在制作一个 iPhone 应用程序,我需要它处于纵向模式,所以如果用户将设备横向移动,它不会自动旋转。我怎样才能做到这一点?
问问题
57968 次
10 回答
56
要禁用特定视图控制器的方向,您现在应该覆盖supportedInterfaceOrientations
和preferredInterfaceOrientationForPresentation
。
- (UIInterfaceOrientationMask)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:
方法。通过更改它何时返回是,您将确定它是否会旋转到所述方向。这将只允许正常的纵向方向。
- (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);
}
请注意,shouldAutorotateToInterfaceOrientation:
在 iOS 6.0 中已弃用。
于 2012-08-02T20:55:04.110 回答
41
Xcode 5 及以上
- 在左侧栏中的 Project Navigator 中单击您的项目以打开项目设置
- 转到常规选项卡。
- 在“设备方向”下的“部署信息”部分取消选中您不需要的选项
于 2014-06-13T12:45:20.143 回答
28
Xcode 4 及以下
对于那些错过它的人:您可以使用项目设置屏幕来修复整个应用程序的方向(无需覆盖每个控制器中的方法):
就像切换支持的界面方向一样简单。您可以通过单击左侧面板中的项目 > 应用程序目标 > 摘要选项卡来找到。
于 2013-08-17T15:25:28.767 回答
1
Swift 3 如果你有一个导航控制器,像这样子类化它(仅用于纵向):
class CustomNavigationViewController: UINavigationController {
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return UIInterfaceOrientationMask.portrait
}
override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
return UIInterfaceOrientation.portrait
}
}
于 2017-03-23T09:46:42.823 回答
0
shouldAutorotateToInterfaceOrientation
从您的课程中完全删除该方法也可以。如果您不打算轮换,那么在您的类中使用该方法是没有意义的,代码越少越好,保持清洁。
于 2012-08-03T01:58:47.797 回答