如何在iOS7中为UITabBarController子项的状态栏应用顶部偏移量

时间:2013-09-20 16:00:18

标签: ios7 statusbar

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

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

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

  2. 它起作用了,因为它将整个UITabBarController向下移动了20个。但是这导致标签在底部被-20切断。

    所以我想我只想将效果应用到每个标签中的UIViewControllers,因为底部没有太多要切断。

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

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

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

      1. 我尝试将其添加到viewDidLoad

        self.edgesForExtendedLayout = UIRectEdgeNone;

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

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

        但没有雪茄。

        1. 我没有增量,因为我正在使用AL。

        2. 我不想隐藏我的状态栏,因为它显示打开/关闭时间,因此用户会发现能够看到时间非常方便。

        3. 我想在每个需要它的viewcontroller中将视图向下移动是最好的选择,但为什么我的代码不能用于#2?

          Hierarchy

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

2 个答案:

答案 0 :(得分:1)

用于iOS 7,xcode 5用于避免重叠

使用

viewDidLoad方法

self.edgesForExtendedLayout = UIRectEdgeNone;
self.automaticallyAdjustsScrollViewInsets = NO;

答案 1 :(得分: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)

让我知道你的结果如何。

更新: 附上屏幕截图:enter image description here