Ios 旋转时状态栏隐藏时调整视图
我已经到处寻找答案,但我只找到有类似问题的人,而不是这个确切的问题,所以希望这里有人能帮助我 我有一个iPad应用程序。在iPad上,无论是纵向还是横向握住iPad,都会显示带有时钟和电池的状态栏。出于这个原因,我在一些视图控制器的顶部有一些自定义工具栏,这些视图控制器包含了这20个点 我现在正在努力使我的应用程序具有通用性。我注意到的第一件事是,当iPhone在纵向模式下帮助时,状态栏会显示出来,但当它在横向模式下保持时,状态栏会隐藏起来,现在我有一个工具栏,它的高度太高了20点Ios 旋转时状态栏隐藏时调整视图,ios,rotation,autolayout,uistatusbar,Ios,Rotation,Autolayout,Uistatusbar,我已经到处寻找答案,但我只找到有类似问题的人,而不是这个确切的问题,所以希望这里有人能帮助我 我有一个iPad应用程序。在iPad上,无论是纵向还是横向握住iPad,都会显示带有时钟和电池的状态栏。出于这个原因,我在一些视图控制器的顶部有一些自定义工具栏,这些视图控制器包含了这20个点 我现在正在努力使我的应用程序具有通用性。我注意到的第一件事是,当iPhone在纵向模式下帮助时,状态栏会显示出来,但当它在横向模式下保持时,状态栏会隐藏起来,现在我有一个工具栏,它的高度太高了20点 我对总是隐藏
我对总是隐藏或总是显示状态栏不感兴趣。我认为在手机的横向模式下隐藏它的功能很好。我想做的是能够检测到状态栏何时隐藏,以便调整工具栏的Y位置(使其为0或-20)。如果有一种方法可以让我设置布局约束来处理此场景,则会有更好的解决方案。正确的方法是:
- 使用具有正常高度的正常工具栏-不要对高度设置任何约束
- 将前导约束0添加到superview(非superview边距),将尾部约束0添加到superview(非superview边距)
- 将顶部约束0添加到顶部布局指南(或安全区域顶部)。这看起来会在工具栏上方留下20个像素的空间,但是笑出一个邪恶的笑声然后继续
- 将视图控制器设置为工具栏的代理(有一个用于此目的的代理出口)
- 让视图控制器采用UIBarPositionDelegate,并按如下方式实现委派方法:
class ViewController: UIViewController, UIBarPositioningDelegate { func position(for bar: UIBarPositioning) -> UIBarPosition { return .topAttached } }
谢谢!这是我第一次使用autolayout,我已经将顶部约束设置为superview的顶部,而不是您所说的“顶部布局指南”。通过调整相对位置,它就像你的屏幕截图一样神奇。我不需要添加您添加的代码,而且我可以保留自己的工具栏。再次感谢!在Swift 4中,它碰巧是“.topAttached”(小T)@MarcoWeber当然,我会更改它。这个答案仍然是正确的,可能仍然有用!