iOS 8:导航和状态栏问题

时间:2015-01-23 11:56:48

标签: objective-c swift ios8 statusbar navigationbar

我在iOS 8中遇到导航和状态栏的问题。状态栏与导航栏重叠。这不是一个新问题,但我的情况更具体。

我在我的应用中使用了RESideMenu,当我使用导航控制器作为内容视图时问题出现了。我看到了十几种改变视图或屏幕框架的解决方案。这样的解决方案似乎并不正确,因为在转到背景并返回前景后,应用程序正在将其导航栏更改为正确的大小和位置。我想知道导致这种行为的原因。

我查看了各种框架和尺寸,以检查切换后哪些参数发生了变化。

这些参数在切换之前:

View frame: (0.0,0.0,320.0,568.0)
View bounds: (0.0,0.0,320.0,568.0)
View margins: top: 0.0, left: 0.0, bottom: 0.0, right: 0.0
VC Preferred size: (0.0,0.0)
NavBar rect: (0.0,0.0,320.0,44.0)
NavBar bounds: (0.0,0.0,320.0,44.0)
NavBar margins: top: 0.0, left: 16.0, bottom: 0.0, right: 16.0

并在切换后:

View frame: (0.0,0.0,320.0,568.0)
View bounds: (0.0,0.0,320.0,568.0)
View margins: top: 0.0, left: 16.0, bottom: 0.0, right: 16.0
VC Preferred size: (0.0,0.0)
NavBar rect: (0.0,20.0,320.0,44.0)
NavBar bounds: (0.0,0.0,320.0,44.0)
NavBar margins: top: 0.0, left: 16.0, bottom: 0.0, right: 16.0

如您所见,NavBar rect已将其Y位置从0.0更改为20.0。如果我在初始点强制使用这些参数,它将无济于事。 (它移动导航栏但不是正确的方式,在应用程序切换之后它会更加混乱)。有趣的是,在app-switch之后,View的边距会发生变化。为什么它会改变那些左右值?

这是我的截图:

切换前:

http://postimg.org/image/ddqlcm5xl/

切换后:

http://postimg.org/image/q4exx9zql/

我尝试在代码和Info.plist中手动隐藏或显示状态栏。它既没有工作也没有。

我希望导航栏和状态栏看起来像第二个屏幕截图,而不必来回切换应用程序。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

试试这段代码,

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

将其粘贴到视图中加载。 希望这会有所帮助。