Iphone 警队及;然后锁定添加到UINavigationViewController的UIViewController的方向(导航控制器支持所有方向)
我相信这个标题暗示了我想要实现的东西;下面我将描述我试图实现的目标&我是如何尝试实现同样的目标,但取得了部分成功的 VC视图控制器NC导航控制器 我已将NC设置为应用程序的RootVC。编写了一个NC覆盖支持的接口方向和shouldAutorotate方法的类别Iphone 警队及;然后锁定添加到UINavigationViewController的UIViewController的方向(导航控制器支持所有方向),iphone,ipad,uiviewcontroller,uinavigationcontroller,ios6,Iphone,Ipad,Uiviewcontroller,Uinavigationcontroller,Ios6,我相信这个标题暗示了我想要实现的东西;下面我将描述我试图实现的目标&我是如何尝试实现同样的目标,但取得了部分成功的 VC视图控制器NC导航控制器 我已将NC设置为应用程序的RootVC。编写了一个NC覆盖支持的接口方向和shouldAutorotate方法的类别 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.w
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
UINavigationController *appNavController = [[UINavigationController alloc]init];
appNavController.view.backgroundColor = [[UIColor redColor]colorWithAlphaComponent:0.5];
self.window.rootViewController = appNavController;
[self.window addSubview:appNavController.view];
FirstViewController *_firstViewController = [[FirstViewController alloc]init];
[appNavController pushViewController:_firstViewController animated:YES];
[_firstViewController release];
return YES;
}
UINavigationController//UINavigationController.m的类别
@implementation UINavigationController(Rotation)
-(BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}
我添加了支持所有方向的第一个VC,在这里一切顺利
//FirstViewControlle.m
-(BOOL)shouldAutorotate
{
return YES;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAll;
}
从第一个VC开始,我使用pushViewController将另一个VC(第二个VC)添加到NC
案例1:当firstVC的方向为横向,并且在NC上按下SecondVC时,旋转被阻止,SecondVC加载到横向
案例2:现在当firstVC处于纵向模式时出现问题,并且在NC上按下SecondVC,旋转被阻止(因为shouldAutorotate设置为否),但第二个VC在纵向模式下加载。在这里,我无法强制定向,尽管secondVC的SupportedInterfaceOrientions设置为UIInterfaceOrientationMaskLandscape值。
需要在横向加载secondVC,无论是NC方向,只要正在查看secondVC,就将其锁定在横向。
//SecondViewControlle.m
-(BOOL)shouldAutorotate
{
return NO;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
在实现上述代码时,我参考了以下问答
欢迎所有建议和解决方案;提前谢谢你应该从你提到的相同的问答中使用最近的答案:也考虑“YouDutoRutoTATE”返回“是”,并且只返回支持方位的一个方向。