繁体   English   中英

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

[英]Adjusting views when Status Bar hides on rotation

我一直在寻找答案,但我只找到了有类似问题的人而不是这个问题,所以希望有人可以帮助我!

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

我正在努力使我的应用程序具有普遍性。 我注意到的第一件事是当iPhone在纵向模式下提供帮助时会显示状态栏,但是当它以横向模式保持时,状态栏会隐藏,现在我有一个20点太高的工具栏。

我总是隐藏或总是显示状态栏我不感兴趣。 我认为在手机上将其隐藏在横向模式下的功能很好。 我想要做的是能够检测状态栏何时被隐藏,以便我可以调整我的工具栏的Y位置(所以使其为0或-20)。 一个更好的解决方案是,如果我有办法设置我的布局约束来处理这种情况。

正确的方法是:

  • 使用具有正常高度的普通工具栏 - 不要在高度上设置任何约束。

  • 将前导约束0添加到superview(不是superview margin),将约束0拖尾到superview(不是superview margin)。

  • 将顶部约束0添加到顶部布局指南(或安全区域的顶部)。 这似乎会在工具栏上方留出20个像素的空间,但笑一笑,然后继续。

  • 将视图控制器设置为工具栏的委托(为此目的有一个委托出口)。

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

     class ViewController: UIViewController, UIBarPositioningDelegate { func position(for bar: UIBarPositioning) -> UIBarPosition { return .topAttached } } 

当有状态栏时,这将导致工具栏的明显高度向上扩展到状态栏后面,但是当没有状态栏时,它将具有正常高度并且在顶部上方。

在此输入图像描述在此输入图像描述在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM