Vic*_*eño 12 rotation ios ios7
我的应用程序可以自动旋转,但我需要其中一个视图仅以纵向模式显示,并且不知道如何实现此目的.我试过这个(除其他事项外)但是有问题的观点仍然在旋转:
-(BOOL)shouldAutorotate
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
Run Code Online (Sandbox Code Playgroud)
Gio*_*esi 15
此解决方案解释了如何控制各个视图控制器的方向,前提是它们由导航控制器管理.
在Xcode 5中,创建一个"Objective-C category"类型的新文件,将其"Category"设置为"rotation",并选择"UINavigationController"作为"Category on".
一个新的文件对将出现在项目中,具有以下名称:UINavigationController + rotation.h UINavigationController + rotation.m
在.m文件中,编写以下代码:
- (BOOL) shouldAutorotate
{
return [[self topViewController] shouldAutorotate];
}
- (NSUInteger) supportedInterfaceOrientations
{
return [[self topViewController] supportedInterfaceOrientations];
}
Run Code Online (Sandbox Code Playgroud)
这样,导航控制器将让当前的顶视图控制器确定方向策略.
然后,在由导航控制器管理的每个特定视图控制器中,您可以覆盖两个与方向相关的方法.
例如,如果特定视图控制器仅以纵向显示:
- (BOOL) shouldAutorotate
{
return NO;
}
- (NSUInteger) supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
Run Code Online (Sandbox Code Playgroud)
确保所需的方向是项目部署信息中设置的方向之一.希望这足够详细,可以提供帮助.
supportedInterfaceOrientations如果将视图控制器显示为模态视图控制器,则可以正常工作.如果将它作为导航控制器堆栈的一部分呈现,它将无法工作.如果您希望您的视图以模态方式呈现但在导航控制器内(例如,具有导航项),我所做的解决方案是子类化UINavigationController并覆盖supportedInterfaceOrientations我的子类上的方法.