导航控制器调整大小仅适用于纵向?

时间:2011-07-19 10:47:46

标签: ios ipad uiviewcontroller uinavigationcontroller uiinterfaceorientation

我正在开发一个在视图控制器中有导航视图控制器的应用程序。一切正常,除了当它不是以纵向开始时导航控制器尺寸不合适并占据整个屏幕的事实。我有截图如何发生。

这是以纵向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);

}

}

2 个答案:

答案 0 :(得分:2)

首先,理想情况下,您不应将ViewController的视图作为子视图添加到另一个viewController的视图中。 iOS中的Atleast< = 4.3。

您必须做的是使用嵌入在navigationController中的ViewController视图启动您的应用程序。我的意思是,尝试将应用程序的根视图控制器设置为navigationController。或者,如果您有一个tabBar作为应用程序的基础,请尝试将每个选项卡的viewController设置为navigationController。

接下来,使用viewController的属性:

self.navigationController

进一步推送/弹出viewControllers。

您不需要在旋转委托方法中进行这些帧调整,您只需要为SongsViewController的视图组件(子视图)正确设置自动调整掩码,其余的都应该自动处理。

答案 1 :(得分:0)

使用不同的旋转功能似乎可以解决问题。 我用过:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation duration:(NSTimeInterval)duration