我创建了一个有很多视图的应用程序,我希望其中一些视图只在纵向上。我在 .m 文件中对此进行了编码:
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return NO;
}
我需要做其他事情吗?可能在 .h 文件中?
我创建了一个有很多视图的应用程序,我希望其中一些视图只在纵向上。我在 .m 文件中对此进行了编码:
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return NO;
}
我需要做其他事情吗?可能在 .h 文件中?
对我来说最干净的解决方案:
转到 Info.plist 文件,对于“支持的界面方向”,删除除“纵向(底部主页按钮)”之外的所有值。
您只需要在该方法中返回一个 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)。您可以使用popViewControllerAnimated
andpushViewController:animated:
方法强制控制器重新查询所需的方向:) 来源:http: //developer.apple.com/library/ios/#documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html)
您必须返回YES
您支持的方向(纵向),而不仅仅是NO
一切。还要确保在项目的目标设置中,您只检查支持的纵向模式。
将以下方法添加到您的视图控制器。例如,这将确保仅支持肖像模式。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
尝试这个..
-(BOOL)shouldAutorotate
{
return NO;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}