导航控制器调整大小仅适用于纵向?
Posted
技术标签:
【中文标题】导航控制器调整大小仅适用于纵向?【英文标题】:Navigation Controller resizing only works in portrati? 【发布时间】:2011-07-19 10:47:46 【问题描述】:我正在开发一个在视图控制器中具有导航视图控制器的应用程序。一切正常,除了当它不以纵向启动时,导航控制器的大小不合适并占据了整个屏幕。我有截图是怎么回事。
以下是纵向启动应用程序时会发生的情况here
现在当应用程序以左右横向或纵向颠倒启动时,会发生这种情况here
我不知道是否有人对此问题有解决方案,因为它在顶部有一个空间,因此在发生旋转时总会有间隙。
为了获得更多参考,我已经包含了我的一些代码。
-(void)viewDidLoad
SongsViewController *viewController = [[SongsViewController alloc] initWithNibName:@"SongsViewController" bundle:nil];
dataView = [[UINavigationController alloc] initWithRootViewController:viewController];
[dataView setDelegate:self];
dataView.view.frame = CGRectMake(192, 85, 768 - 192, 1004 - 85 - 44);
[dataView.view setAutoresizesSubviews:YES];
[dataView.view setAutoresizingMask:UIViewAutoresizingNone];
[self.view addSubview:dataView.view];
[viewController release];
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation duration:(NSTimeInterval)duration
if (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
dataView.view.frame = CGRectMake(192, 85, 768 - 192, 1004 - 85 - 44);
else
dataView.view.frame = CGRectMake(192, 85, 1024 - 192, 748 - 85 - 44);
【问题讨论】:
【参考方案1】:首先,理想情况下,您不应该将 ViewController 的视图作为子视图添加到另一个 viewController 的视图中。至少在 ios
您必须做的是使用嵌入在导航控制器中的 ViewController 的视图来启动您的应用程序。我的意思是,尝试将应用程序的根视图控制器设为navigationController。或者,如果您有一个 tabBar 作为应用程序的基础,请尝试将每个选项卡的 viewController 设置为 navigationController。
接下来,使用 viewController 的属性:
self.navigationController
进一步推入/弹出视图控制器。
您无需在旋转委托方法中进行那些框架调整,您只需为 SongsViewController 的视图组件(的子视图)正确设置自动调整大小的掩码,其余的一切都应自动处理。
【讨论】:
将查看隐藏在子视图中的自动调整大小。我知道视图控制器内部的导航控制器是非常规的,但我需要它能够在右侧的列表中移动。【参考方案2】:使用不同的旋转功能似乎可以解决问题。 我用过:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation duration:(NSTimeInterval)duration
【讨论】:
以上是关于导航控制器调整大小仅适用于纵向?的主要内容,如果未能解决你的问题,请参考以下文章
横向模式下的导航控制器堆栈,但总是以纵向帧大小模态呈现视图控制器视图
当 UISplitViewController 旋转为纵向时,如何调整 UINavigationController 内容的大小
旋转到横向时自动调整 UINavigationBar 的大小