iOS 9 和 10:使用安全区域布局指南时在屏幕顶部添加了空白区域

Posted

技术标签:

【中文标题】iOS 9 和 10:使用安全区域布局指南时在屏幕顶部添加了空白区域【英文标题】:iOS 9 and 10: blank space added at the screen top while using safe area layout guide 【发布时间】:2018-03-20 10:43:14 【问题描述】:

在我的swift 4 项目中,我将ios 9.0 设置为deployement target,并且我正在使用safe area layout guide

storyboard 中,我总是在我的主要view 顶部空间和safe area 顶部之间给出0 作为值。当我在iOS 9iOS 10 中运行应用程序时,顶部有一个空白区域。

如何在不禁用safe area layout guide 的情况下删除此空白?

【问题讨论】:

你在用navigationController吗? @MeenorRanpura 是的,但我隐藏了导航栏。在 iOS 11 中一切正常,我在使用 iOS 9 和 10 时遇到问题 【参考方案1】:

转到Storyboard > Select the ViewController > Attribute Inspector(右窗格中从右数第三个选项卡。)> 取消选中Adjust Scroll View insets

【讨论】:

你能解释一下吗?【参考方案2】:

我猜你是在 iPhone X 上测试?您可以通过以下方式更改安全区域插图:

   var newSafeArea = UIEdgeInsets()
   newSafeArea.top -= 20
   self.additionalSafeAreaInsets = newSafeArea

【讨论】:

我在 iOS 6 中测试 iOS 9 我收到了这个错误'additionalSafeAreaInsets' is only available on iOS 11.0 or newer' 是的,有道理。错过了你在 iOS 11 以下测试【参考方案3】:

我无法解释原因,但在故事板视图中不计算导航栏高度,因此您将有一个(通常为 44 像素)空白。您可以像 Lazy 所说的那样,通过打开 Adjust Scroll View insets 来删除它,或者您可以通过在 viewDidLoad() 中设置 edgesForExtendedLayout = [] 以编程方式完成它

https://developer.apple.com/documentation/uikit/uiviewcontroller/1621515-edgesforextendedlayout 告诉你更多关于它的信息。

【讨论】:

以上是关于iOS 9 和 10:使用安全区域布局指南时在屏幕顶部添加了空白区域的主要内容,如果未能解决你的问题,请参考以下文章

在 nib 文件中使用安全区域布局,但将部署目标保留为 iOS 8

安全区域布局指南不适用于 UITableView 的 BackgroundView

安全区域布局指南不适用于情节提要中的 UITableViewController

安全区域指南未出现在 Xcode 中

iPhone X 设计适配指南 & iOS 11 新特性

列表视图滚动时在屏幕底部隐藏线性布局