【问题标题】:Black bar between navigation bar and tableview since migration自迁移以来导航栏和表格视图之间的黑条
【发布时间】:2012-10-20 23:05:24
【问题描述】:

首先,我是法国人;对不起英文错误,我希望你能理解我的问题。我只在 iOS 应用上工作了 3 个月,可能我还没有掌握所有的 iOS 开发概念。

我有一个应用程序在使用 iOS 5 的设备和模拟器上正确运行,但是当我在 iOS6 设备或模拟器上尝试它时,我遇到了一个奇怪的情况。在导航栏和我的表格视图之间的屏幕顶部会出现一个黑条。

我做了一些研究,其他人也有同样的问题,但是解决他们问题的方法对我不起作用。 见:Black bar between navigation bar and table view appears on iOS 6

自从我将 xcode 版本升级到 4.5 和 iOS6 SDK 后,我就遇到了这个问题。看下面的模拟器截图,先运行iOS6再运行iOS5。奇怪的是,黑条是在应用程序启动后出现的。如果我更改了选项卡(显然视图控制器已切换),那么黑条将不再存在。

我尝试通过切换 tabBar 的元素来更改第一个 viewController,但即使我将名为“Tendances”的选项卡放在首位,也会出现相同的情况。黑条在此视图上,但不在其他视图上。

我在 iphone 3 模拟器上制作了这些屏幕截图,但使用 iphone4 或 5 模拟器或真实设备无法解决我的问题。

屏幕截图 1:我在 iOS6 模拟器上启动应用程序。您可能会看到黑条位于导航栏和 tableView 标题之间。

屏幕截图 2:我仍在同一个模拟 (iOS6) 上运行同一个应用程序,我决定使用 tabBarController 切换选项卡。黑条消失。

屏幕截图 3:我回到第一个标签然后没有黑条...

屏幕截图 4:我关闭了运行 iOS6 的模拟器以换取另一个运行 iOS5。我启动了该应用程序,然后您可能会看到没有黑条。

【问题讨论】:

标签: objective-c ios xcode ios6 xcode4.5


【解决方案1】:

试试这个解决方案:How to set the top position = 0 after setStatusBarHidden:Yes?

我曾经遇到过同样的问题,在很多 SO 页面上都苦苦挣扎,但这是最终的解决方案。

【讨论】:

  • 我把:[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]; 放在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中它可以工作,这个小栏消失了,但我不想禁用状态栏,顺便说一下xcode 告诉我方法setStatusBarHidden自 iOS 3.2 起已弃用:/ 无论如何谢谢你 :)
  • @JulienFortin 哦,我的意思是那个帖子的答案 :) 你有没有尝试过这两个选项中的任何一个:1)[self.view setFrame: [[UIScreen mainScreen] bounds]]; 和/或 2)[viewController.view setFrame: [viewController.view bounds]]; 应该没有必要隐藏状态栏。
【解决方案2】:

我遇到了完全相同的问题:当第一次启动应用程序/这个 tableviewcontroller(我的是一个 fetchedresultscontroller,只是为了更清楚)时,导航栏的高度会缩小,并且导航栏和导航栏之间会出现一个黑条视图控制器的项目。如果我切换到不同的视图控制器(不是 tableview 的)并返回,该栏将消失,导航栏恢复正常大小。我在过去的 3 个小时里一直在寻找答案,只是尝试了一切,但对我没有任何帮助。

在我的案例中起作用的是一个非常奇怪的解决方案:使导航栏不可见,然后再次可见。所以看起来这实际上加载了两次,第一次是黑条,第二次是恢复正常。

在我的 viewDidLoad 中,我现在有这个:

[self.navigationController setNavigationBarHidden:YES]; 

[self.navigationController setNavigationBarHidden:NO]; 

【讨论】: