UINavigationController 中的仅横向 UIViewController
Posted
技术标签:
【中文标题】UINavigationController 中的仅横向 UIViewController【英文标题】:Landscape only UIViewController in UINavigationController 【发布时间】:2013-04-04 15:44:57 【问题描述】:我有UITableViewController
,其中一个选项卡上是UINavigationViewController
。 UINavigationController
根视图控制器为UITableViewController,点击单元格时出现UIViewController
,需要锁定在Landscape
中。
我希望每个 Controller 都锁定在 Portrait
,除了提到的必须锁定在 Portrait
的 UIViewController
。
我尝试了以下方法:
CustomTabBarController.m:
#import "CustomTabBarController.h"
@implementation CustomTabBarController
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
// You do not need this method if you are not supporting earlier ios Versions
return [self.selectedViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation];
- (BOOL)shouldAutorotate
return YES;
- (NSUInteger)supportedInterfaceOrientations
return [self.selectedViewController supportedInterfaceOrientations];
@end
CustomNavigationController.h:
#import "CustomNavigationController.h"
@implementation CustomNavigationController
-(NSUInteger)supportedInterfaceOrientations
return [self.topViewController supportedInterfaceOrientations];
-(BOOL)shouldAutorotate
return YES;
@end
在必须锁定到 Landscape 的 UIViewController 中,我放了:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (interfaceOrientation == UIInterfaceOrientationLandscapeRight));
-(NSUInteger)supportedInterfaceOrientations
return UIInterfaceOrientationMaskLandscape;
-(BOOL)shouldAutorotate
return YES;
但它不起作用,我可以将它旋转到横向,它会保持锁定在横向,但我希望它自动出现在横向中。
有什么建议吗?
【问题讨论】:
【参考方案1】:过去我遇到了一个大问题,UITabBarController
不尊重我支持的显示视图控制器的界面方向。
我通过子类UITabBarController
解决了这个问题,并在选择项目时捕获。然后我会自己调用视图控制器,询问它支持的方向是什么,并在需要时自己强制旋转。我还会在旋转时调用选定的视图控制器来设置/更改我支持的方向。
我实现了UITabBarDelegate
并使用didSelectItem
来捕获选项卡开关。我不确定现在是否有更好的方法。
【讨论】:
【参考方案2】:尝试重写方法
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
【讨论】:
【参考方案3】:尝试使用该方法阻止特定窗口的某些方向:
– application:supportedInterfaceOrientationsForWindow:
【讨论】:
以上是关于UINavigationController 中的仅横向 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章
(Swift) 在嵌套在 Main UINavigationController 中的 UINavigationController 和 UITabController 之间切换
UINavigationController 中的常量 UIBarButtonItem
UINavigationController 中的 setAlpha
UINavigationController:调整大小动画中的标题跳转