通话时iOS状态栏高度不正确

Posted

技术标签:

【中文标题】通话时iOS状态栏高度不正确【英文标题】:iOS Status Bar Height Incorrect when In a Call 【发布时间】:2017-06-01 19:37:02 【问题描述】:

我看到一个问题,如果用户在通话时打开我的应用程序,或者执行其他导致状态栏为双倍高度的操作,则整个布局会被状态高度向下推吧。

例如,如果用户输入一个电话并且他们已经在应用程序中,那么布局将如下所示:

但是,如果用户已经在通话并进入应用程序,则布局将如下所示(图像底部的导航栏被截断是问题的一部分,而不是屏幕截图的问题):

我所有的布局都是通过 StoryBoard 创建的,并且正在使用 AutoLayout。我最近还审查并修复了任何看起来不好或不合适的 AutoLayout 约束。

如果有人对可能发生的事情或解决此问题的方法有指导,将不胜感激!

【问题讨论】:

【参考方案1】:

在标签栏控制器所在的主视图控制器中,确保覆盖 viewDidLayoutSubviews() 并调整 UITabBarController 的大小:

override func viewDidLayoutSubviews() 
    super.viewDidLayoutSubviews()
    self.myTabViewController.view.frame = self.view.bounds

【讨论】:

这很有效,尽管我不得不为我的视图结构稍微调整一下。谢谢!【参考方案2】:

使用以下:

func viewWillLayoutSubviews
     self.view.layoutIfNeeded()
 

【讨论】:

不走运。我也试过在打电话之前打电话给self.view.setNeedsLayout(),但还是没有。

以上是关于通话时iOS状态栏高度不正确的主要内容,如果未能解决你的问题,请参考以下文章

通话状态栏更改时查看调整大小[重复]

iOS App布局错误调用状态栏

在启用通话状态栏的情况下打开应用程序时的 iOS 标签栏问题

当用户在通话状态栏中时,导航栏布局出现异常

iOS 状态栏活动应用

包含 UINavigationController 的状态栏大小不正确