我四处浏览寻找这个问题的答案,但我只找到了有类似问题的人,而不是这个确切的问题,所以希望这里有人可以帮助我!
我有一个 iPad 应用程序。在 iPad 上,当您纵向或横向握住 iPad 时,始终会显示带有时钟和电池的状态栏。出于这个原因,我在一些视图控制器的顶部有一些自定义工具栏,这些工具栏占了这 20 点。
我现在正在努力使我的应用程序具有通用性。我注意到的第一件事是,当 iPhone 处于纵向模式时,状态栏会显示,但当它处于横向模式时,状态栏会隐藏,现在我的工具栏高了 20 磅。
我对始终隐藏或始终显示状态栏不感兴趣。我认为在手机横向模式下隐藏它的功能很好。我想要做的是能够检测状态栏何时隐藏,以便我可以调整工具栏的 Y 位置(因此将其设置为 0 或 -20)。更好的解决方案是,如果有一种方法可以让我设置布局约束来处理这种情况。
正确的做法是:
使用具有正常高度的正常工具栏 - 不要对高度设置任何限制。
将前导约束 0 添加到超级视图(不是超级视图边距),将尾随约束 0 添加到超级视图(不是超级视图边距)。
将顶部约束 0 添加到顶部布局指南(或安全区域顶部)。这看起来会在工具栏上方留下 20 像素的空间,但是笑一笑然后继续。
将视图控制器设置为工具栏的委托(有一个用于此目的的委托出口)。
-
让视图控制器采用 UIBarPositioningDelegate 并实现委托方法,如下所示:
class ViewController: UIViewController, UIBarPositioningDelegate {
func position(for bar: UIBarPositioning) -> UIBarPosition {
return .topAttached
}
}
当有状态栏时,这将导致工具栏的外观高度在状态栏后面向上延伸,但当没有状态栏时,工具栏将具有正常高度并紧贴顶部。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)