iOS7 – 仅锁定标签栏内的某些视图控制器的方向?
我知道这个问题已被无数次问过,虽然我根本无法让它工作,但实际上没有答案可行,也许我没有正确地复制代码,但无论哪种方式它都不会工作.
无论如何,我的应用程序的视图控制器布局如下,请注意这是一个选项卡式应用程序,而不是一个View应用程序: 主标签栏控制器>分支到多个导航栏控制器(都引用相同的CustomNavigationController类)>在每个Nav Controller下都有许多UIViewControllers,其中一些引用自定义视图控制器类. (有关层次结构的直观表示,请参见pic) 我的问题是:如何才能将应用程序中所有页面的方向锁定为纵向模式,但是如果用户旋转设备,允许某些页面(UIViewControllers)能够旋转到横向? (上图中标有星号的页面是我想要允许旋转的页面) 请记住,我想允许旋转的视图控制器是导航控制器的子控制器,导航控制器也是标签栏控制器的子控制器.另外,请注意其中一个View控制器不在Navigation控制器下,它位于Tab Bar控制器下,但不确定这会影响多少. 非常感谢 来自我的应用程序的相关类的代码 标签栏控制器代码(注意这里没有有意义的代码,因为我从来没有用过这个类) @interface TabBarController () @end @implementation TabBarController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end 导航控制器类(也从来没有一个类 @interface NavigationBar () @end @implementation NavigationBar - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { self.title = @"NavigationController"; } return self; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end 主页类(必须以肖像锁定) @interface HomePage () @end @implementation HomePage - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { self.title = @"HomePage"; } return self; } - (void)viewDidLoad { [super viewDidLoad]; // If the condition is not true/not YES,than create and show alert. if (![[NSUserDefaults standardUserDefaults] boolForKey:@"didShowOneTimeAlert"]) { //Define and Edit the Alert details. UIAlertView *zoomTip = [[UIAlertView alloc] initWithTitle:@"Tips" message:@"On all web site and map pages,pinch in and out to zoom. n n On the 'Program' page,tap on a session to view more details." delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil]; //Show the alert [zoomTip show]; [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"didShowOneTimeAlert"]; [[NSUserDefaults standardUserDefaults] synchronize]; } // End if } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end 地图类(显示地图并且必须能够旋转的页面) @interface MezzanineLevelMap () @end @implementation MezzanineLevelMap @synthesize scrollView,imageView; -(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { return imageView; } - (void)viewDidLoad { [super viewDidLoad]; UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Mezzanine Level"]]; self.imageView = tempImageView; scrollView.maximumZoomScale = 1; scrollView.minimumZoomScale = .25; scrollView.clipsToBounds = YES; scrollView.delegate = self; [scrollView addSubview:imageView]; scrollView.zoomScale = .25; // Change scroll view sizes according to the screen size if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { CGSize result = [[UIScreen mainScreen] bounds].size; if (result.height == 480) { [scrollView setFrame:CGRectMake(0,5,320,475)]; } else { [scrollView setFrame:CGRectMake(0,563)]; } // End if } // End if } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end 解决方法
只需在视图控制器(iOS 6)中实现以下功能:
- (BOOL)shouldAutorotate { return NO; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |