【问题标题】:Show status bar with animation causes view to move up 20px so its under the status bar显示带有动画的状态栏会导致视图向上移动 20 像素,因此它位于状态栏下方
【发布时间】:2015-07-28 16:36:57
【问题描述】:

我有一个显示和隐藏状态栏的 UIViewController。隐藏状态栏没有问题,但是当我使用以下方式显示状态栏时:

 [[UIApplication sharedApplication] setStatusBarHidden:NO                                         withAnimation:UIStatusBarAnimationSlide];

使视图的内容向上移动 20 像素,使其最终位于状态栏下方。我不知道我还能提供什么,但这个描述,所有发生的事情是当我隐藏状态栏时,状态栏所在的顶部有 20px 的空白(这就是我想要的)但是当我显示状态栏视图在状态栏下向上移动(这不是我想要的)。希望在不影响 UIViewController 及其内容的情况下显示和隐藏状态栏。

【问题讨论】:

  • 视图的内容是否会因为顶部布局指南约束而移动?
  • @ThatGuy 可能。状态栏在视图首次加载时出现(顶部布局约束设置为 0,顶部大约有 20pt 的空间,因此视图不会隐藏在其后面),但基于操作状态栏将消失。状态栏将向上滑出视图,但顶部的 20pt 空间将保留(根据需要),但是当状态栏滑回时,视图向上滑动 20 pt,因此不再有空白(不需要) :(
  • @ThatGuy 我清除了约束,这绝对是它。不过我想添加自动布局
  • @ThatGuy 在下面看到我自己的答案,你的建议将我推向了正确的方向

标签: ios objective-c statusbar


【解决方案1】:

我有同样的问题。我设法在情节提要中修复了它。

向上移动的视图的顶部约束设置为顶部布局指南。我将其更改为指向 Superview.Top 并且视图停止移动。

要在顶部布局指南上明确使用 Superview,您需要使用 Pin(故事板左下角的按钮)并在设置约束之前取消选中“约束到边距”

【讨论】:

  • 这也为我修好了!我正在使用 swift 3 / xcode 8,并且正在使用和不使用状态栏的视图之间进行交互式动画转换,并且遇到了视图向上移动的问题。我尝试了很多程序,例如在动画块中将视图向下移动 20 px,设置内容插图等,但这些都不起作用。约束到超级视图效果很好!
  • 我发现 IB 很难在 Xcode 8 中将视图约束到超级视图,一切都希望将视图约束到顶部布局指南。我发现约束超级视图的可靠方法是:单击情节提要视图底部栏右侧的“对齐”按钮。选择“在容器中垂直居中”,然后双击约束本身并将 superview.centerY 更改为 superview.top 并将 yourView.centerY 更改为 yourView.top。
  • 这不会在 iphone X 上崩溃吗?
【解决方案2】:

我通过删除此 ViewController 上的自动布局并手动设置视图布局解决了这个问题:

-(void)viewDidLayoutSubviews

似乎解决了这个问题。感谢@ThatGuy 将我推向正确的方向。

【讨论】:

    猜你喜欢
    • 2012-01-06
    • 1970-01-01
    • 2018-05-30
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 2012-06-26
    相关资源
    最近更新 更多