我有一个具有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位置以补偿导航栏,它会将所有内容一起移动,包括视图中的日期选择器。
我想了解为什么应用程序在首次加载时表现不同,并希望有人可以向我解释这个问题以及如何解决问题的任何想法,或者请指出我正确的方向。我怀疑这与顶部的状态栏有关,因为它与我看到的偏移大小差不多。
任何帮助将不胜感激! 感谢
答案 0 :(得分:0)
好的,我已经弄清楚了。如果有人感兴趣,似乎在应用程序启动时,UINavigationBar
的框架的y位置为10像素。我所要做的就是将UINavigationBar
的帧垂直位置设置为0像素,并且一切正常!任何人都需要这样做,这是代码:
self.navigationController.navigationBar.frame = CGRectMake(0,0,320,45)
我在viewWillAppear
方法中调用上面的一行,所有内容都按预期工作。