7

我的应用程序是基于 UITabBarController 的应用程序,具有 3 个子 vc。状态栏与我的视图控制器重叠。我已经尝试了我在 SO 中找到的所有内容:

  1. 我尝试将此添加到我的 AppDelegate:

    //向下偏移为状态栏腾出空间 self.window.bounds = CGRectMake(0, -20, self.window.frame.size.width, self.window.frame.size.height);

它之所以起作用,是因为它将整个 UITabBarController 向下移动了 20。但这导致选项卡在底部被 -20 截断。

所以我想我只想将效果应用于每个选项卡中的 UIViewControllers,因为在底部没有太多要切断的地方。

  1. 所以我尝试向 viewDidLoad 添加类似的代码,然后调用 setNeedsDisplay:

    self.view.bounds = CGRectMake(0, -20, self.view.frame.size.width, self.view.frame.size.height);

但这根本没有效果,仍然会重叠。

  1. 我尝试将此添加到 viewDidLoad

    self.edgesForExtendedLayout = UIRectEdgeNone;

而且我还取消选中了顶部栏下的延伸边缘,但它仍然会进入状态栏。也试过:

if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
 {
    self.edgesForExtendedLayout = UIRectEdgeNone;
 }

但没有雪茄。

  1. 我没有增量,因为我使用的是 AL。

  2. 我不想隐藏我的状态栏,因为它会显示打开/关闭时间,因此用户会发现它可以方便地查看时间。

我想在每个需要它的视图控制器中将视图向下移动一点是最好的选择,但是为什么我的代码不适用于#2?

等级制度

(顺便说一句:不确定为什么代码格式不起作用并且编号已关闭,即使我尝试编辑它,它似乎在编辑视图中工作正常,但在预览或实时视图中却没有)

4

2 回答 2

1

适用于 iOS 7 和 xcode 5 以避免重叠

用于

viewDidLoad 方法

self.edgesForExtendedLayout = UIRectEdgeNone;
self.automaticallyAdjustsScrollViewInsets = NO;
于 2014-02-11T15:03:55.687 回答
0

嗯,我和你有同样的问题。我用很多动作修复了它。我使用红宝石运动:

@window.bounds = CGRectMake(0, -20, UIScreen.mainScreen.bounds.size.width, UIScreen.mainScreen.bounds.size.height - 20)
@window.frame = CGRectMake(0, 0, UIScreen.mainScreen.bounds.size.width, UIScreen.mainScreen.bounds.size.height)
....
tabBarController.view.bounds = CGRectMake(0, 20, UIScreen.mainScreen.bounds.size.width, UIScreen.mainScreen.bounds.size.height - 20)

让我知道你最后的进展如何。

更新:附上截图:在此处输入图像描述

于 2013-10-05T19:18:31.300 回答