如何锁定iOS中的屏幕,使其只有纵向方向?

时间:2012-07-11 09:10:52

标签: ios orientation rotation

我创建了一个包含很多视图的应用,我希望其中一些仅以纵向方式显示。 我在.m文件中编码了这个:

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

我还需要做点什么吗?可能在.h文件中?

5 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:4)

您只需要在该方法中返回BOOL。如果您只想要肖像模式,那意味着:

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

如果将肖像上下颠倒(在纵向上将设备旋转180度),则该方法将如下所示:

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

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

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

答案 2 :(得分:2)

您必须为您支持的方向(纵向)返回YES,而不仅仅是NO。另外,请确保在项目的目标设置中仅将肖像模式检查为支持。

答案 3 :(得分:1)

将以下方法添加到viewcontroller。这将确保仅支持纵向模式。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}
-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

答案 4 :(得分:0)

试试这个..

 -(BOOL)shouldAutorotate
 {
  return NO;
 }

-(NSUInteger)supportedInterfaceOrientations
 {
 return UIInterfaceOrientationMaskPortrait;
 }

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