当状态栏隐藏旋转时调整视图

我浏览过四处寻找答案,但我只find了类似问题的人,而不是这个确切的问题,所以希望这里有人能帮助我!

我有一个iPad应用程序。 在iPad上,当您将iPad放在纵向或横向时,始终显示带有时钟和电池的状态栏。 出于这个原因,我在我的一些视图控制器的顶部有一些自定义工具栏,这些工具栏占了那20点。

我现在正在努力使我的应用程序通用。 我注意到的第一件事是,当iPhone在纵向模式下的帮助显示状态栏,但是当它在横向模式下举行,状态栏隐藏,现在我有一个20点太高的工具栏。

我不总是隐藏或总是显示状态栏感兴趣。 我认为在手机上的风景模式隐藏它的function是好的。 我想要做的是能够检测状态栏是否隐藏,以便我可以调整我的工具栏的Y位置(所以使它为0或-20)。 更好的解决scheme是,如果有一种方法可以设置我的布局约束来处理这种情况。

正确的做法是:

  • 使用正常高度的普通工具栏 – 不要对高度设置任何限制。

  • 将约束0添加到超级查看(不是超级查看边距),将约束0限制到超级查看(不是超级查看边距)。

  • 将顶部约束0添加到顶部布局指南。 这似乎会在工具栏上方留下20个像素的空间,但是会笑起来,然后继续。

  • 将视图控制器设置为工具栏的委托(为此,有一个代理sockets)。

  • 视图控制器采用UIBarPositioningDelegate并实现委托方法如下:

    class ViewController: UIViewController, UIBarPositioningDelegate { func positionForBar(bar: UIBarPositioning) -> UIBarPosition { return .TopAttached } } 

当状态栏出现时,这会使工具栏的高度在状态栏的后面延伸,但是在没有状态栏的时候,它会有正常的高度,并且会碰到顶部。

在这里输入图像说明在这里输入图像说明在这里输入图像说明