我创建了一个包含很多视图的应用,我希望其中一些仅以纵向方式显示。 我在.m文件中编码了这个:
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return NO;
}
我还需要做点什么吗?可能在.h文件中?
答案 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)。您可以使用popViewControllerAnimated
和pushViewController: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);
}