2010-01-30 71 views
5

我已检查了其他答案,但还没有找到任何真正描述我的情况的东西。所以在这里。旧显示屏移位后模态视图控制器问题

我有一个基于窗口的应用程序,它可以从xib创建并加载UIViewController。它的状态栏被禁用,高度为480,UISegmentedControl的y原点为451.它很好地显示在屏幕底部。*

在UIViewController的viewDidLoad中,我创建了一个UIView initWithFrame:CGRectMake(0.0, 0.0, 320.0, 431.0)];(即480 - 29像素UISegmentedControl和20的状态栏。)我将它添加到UIViewController与[self.view addSubview:gameBoard];。然后,将一些UIView游戏片段添加为游戏板UIView的子视图,并且所有内容都按照我认为应该显示的内容进行显示。

当点击某些UIView子视图时,应该会出现一个菜单。我创建了一个具有所需控件的UIViewController。我使用委托方法从子视图,谁拿起触发事件来电,来根的UIViewController - 这确实

self.squadOrders = [[SquadOrders alloc] initWithNibName:@"SquadOrders" bundle:nil]; 
    squadOrders.viewControllerDelegate = self; 
    [self presentModalViewController:squadOrders animated:YES]; 

和模态对话框显示,因为我认为它应该从下缘向上滑动该屏幕没有覆盖状态栏,而是覆盖了根UIViewController底部提到的UISegmentedControl。它得到解雇

[self dismissModalViewControllerAnimated:YES]; 

这就是麻烦开始的地方。 UISegmented控件向下移动20个像素,以便在屏幕底部只能看到9个像素。 视图向下移动的顶部有一个20像素的白色间隙。

*启用此xib或任何其他xib上的状态栏并不会改变所描述的行为。相关

其他计算器的问题是:

IPhone - After dismissing Modal View Controller - gap is left at top of page - 但所提供的解决方案是没有加载,显示模式视图控制器的子视图另一个视图控制器 - 但我不这样做,只是UIViews。还有一种建议,即在模式消失后重新设置适当的框架,但感觉就像是作弊。

Contents of UIScrollView shifted after dismissing ModalViewController - 我玩过所有视图和控制器的高度 - 确定它们匹配,没有帮助。此外,该框架可以重置,但只能解决症状。

还有其他的,但到目前为止没有任何解决这个问题。

+0

看着self.view。在即将显示模式之前的帧,它是0,0,320,480。当模式被解除时,它变为0,20,320,460。希望有所帮助。 – 2010-01-30 03:46:22

+0

我不相信有没有解决方案。 – ZaBlanc 2011-01-23 17:32:15

回答

0

我刚刚解决了这个问题,视图向下移动。 这是因为navigationBar.barStyle设置为UIBarStyleBlackTranslucent

0

这是一个黑客攻击,但可能有助于某人。我在整个应用程序中遇到了大量的20个像素间隙问题,他们都使用导航控制器作为我的根视图控制器。我根本不用它作为导航控制器(并且我隐藏了导航栏),所以此解决方案可以在大多数应用程序中使用。

基本上,我有一个基本视角(320×480,无状态栏),其控制器坐在我的导航控制器,然后我的应用程序的其余部分被添加作为子视图的基本视角。这一切现在都很好。

相关问题