我在我的应用中使用导航控制器。我希望我的所有viewController都只是纵向,除了一个,它将支持横向。
在Stack Overflow中使用已接受的答案我将我的导航控制器子类化并包含以下代码:
iOS 6 - Navigation Controller Landscape Rotations For Some Views While Others Portrait Only
- (BOOL)shouldAutorotate {
id currentViewController = self.topViewController;
if ([currentViewController isKindOfClass:[IssueViewController class]])
return YES;
return NO;
}
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAll;
}
这会挑出我想要旋转的一个视图控制器。除非我在横向上启动应用程序,否则一切都很有效。图像被压碎并偏离中心。
有关纠正此事的任何建议吗?谢谢!
答案 0 :(得分:0)
测试了您的代码。仅当您更改方向时,此方法才能正常工作,但如果您在横向上启动应用程序或从横向控制器转到其他控制器,则它不会根据当前界面方向反映更改。
使用以下方法,我曾经用它来解决同类问题。
在UINavigationController子类
中添加此代码-(BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}
在ViewController中,添加此代码
- (BOOL)shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
//Control UIInterfaceOrientationMask here to tell which interface orientations you want to support for this ViewController
return UIInterfaceOrientationMaskPortrait;
}