在应用程序启动时,视图的定位是不同的

时间:2012-02-05 12:44:19

标签: ios5 uitabbarcontroller uinavigationbar uiapplicationdelegate

我有一个具有UITabBarController的应用程序,当按下不同的选项卡时,我覆盖viewWillAppear,获取对tabBarController的引用,然后调整其框架的大小。这样做的原因是一些标签需要屏幕的整个高度,而其他标签在顶部120像素中具有背景。

我引用tabBarcontroller的方法是获取应用程序委托并使用它对tabBarController的引用来移动它的位置:

MyAppDelegate * del = [UIApplication sharedApplication] .delegate; del.tabBarController.view.frame = CGRectMake(0,120,320,360);

当在标签之间切换时,此方法可以正常工作,但是第一次应用程序加载时,它会做一些奇怪的事情,我不明白为什么。我的第一个标签实际上有一个NavigationBar,然后包含一个有pickerView的视图。我的应用程序第一次加载时,NavigationBar显示大约10px太低,但pickerView仍然出现在正确的位置。我希望通过在第一次调用viewWillAppear时以不同的方式处理事物来解决这个问题,但是如果我减小y位置以补偿导航栏,它会将所有内容一起移动,包括视图中的日期选择器。

我想了解为什么应用程序在首次加载时表现不同,并希望有人可以向我解释这个问题以及如何解决问题的任何想法,或者请指出我正确的方向。我怀疑这与顶部的状态栏有关,因为它与我看到的偏移大小差不多。

任何帮助将不胜感激! 感谢

1 个答案:

答案 0 :(得分:0)

好的,我已经弄清楚了。如果有人感兴趣,似乎在应用程序启动时,UINavigationBar的框架的y位置为10像素。我所要做的就是将UINavigationBar的帧垂直位置设置为0像素,并且一切正常!任何人都需要这样做,这是代码:

self.navigationController.navigationBar.frame = CGRectMake(0,0,320,45)

我在viewWillAppear方法中调用上面的一行,所有内容都按预期工作。