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

Posted

技术标签:

【中文标题】应用程序启动时视图的定位不同【英文标题】:Positioning of view is different at application startup 【发布时间】:2012-02-05 12:44:19 【问题描述】:

我有一个具有 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】:

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

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

我在viewWillAppear 方法中调用了上面的行,一切都按预期工作。

【讨论】:

以上是关于应用程序启动时视图的定位不同的主要内容,如果未能解决你的问题,请参考以下文章

启动时不同的视图控制器

应用程序第二次启动时显示不同的视图

如何将列表视图定位到应用程序销毁之前的确切位置?

首次运行时加载不同的视图

在初始运行时打开不同的视图

当应用程序从后台返回时,Xamarin iOS 呈现不同的视图控制器