4

我创建了一个有很多视图的应用程序,我希望其中一些视图只在纵向上。我在 .m 文件中对此进行了编码:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return NO;
}

我需要做其他事情吗?可能在 .h 文件中?

4

5 回答 5

5

对我来说最干净的解决方案:

转到 Info.plist 文件,对于“支持的界面方向”,删除除“纵向(底部主页按钮)”之外的所有值。

于 2014-07-14T15:36:24.263 回答
4

您只需要在该方法中返回一个 BOOL 即可。如果您只想要纵向模式,这意味着:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation == UIInterfaceOrientationPortrait) ;
}

如果也可以纵向倒置(纵向时将设备旋转 180 度),那么该方法将如下所示:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation == UIInterfaceOrientationPortrait) || (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);
}

最后一个条件可以替换为对 的调用UIDeviceOrientationIsPortrait(interfaceOrientation),它进行相同的比较(参见:http: //developer.apple.com/library/ios/#documentation/uikit/reference/UIKitFunctionReference/Reference/reference.html

LE:如果这不起作用,您可以尝试使用以下“hack”:尝试再次弹出并推送视图(如果您使用的是 NavigationController)。您可以使用popViewControllerAnimatedandpushViewController:animated:方法强制控制器重新查询所需的方向:) 来源:http: //developer.apple.com/library/ios/#documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html

于 2012-07-11T09:14:50.063 回答
2

您必须返回YES您支持的方向(纵向),而不仅仅是NO一切。还要确保在项目的目标设置中,您只检查支持的纵向模式。

于 2012-07-11T09:13:43.443 回答
1

将以下方法添加到您的视图控制器。例如,这将确保仅支持肖像模式。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}
-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}
于 2013-02-21T12:00:53.210 回答
0

尝试这个..

 -(BOOL)shouldAutorotate
 {
  return NO;
 }

-(NSUInteger)supportedInterfaceOrientations
 {
 return UIInterfaceOrientationMaskPortrait;
 }

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
 {
  return (interfaceOrientation == UIInterfaceOrientationPortrait);
 }
于 2013-03-29T10:16:04.340 回答