在导航栏iOS 11安全区域下定位视图

Posted

技术标签:

【中文标题】在导航栏iOS 11安全区域下定位视图【英文标题】:Positioning a view under navigation bar iOS 11 safe area 【发布时间】:2017-12-30 13:48:39 【问题描述】:

我一直在尝试将带有 UI 元素的视图定位在导航栏下方 - 这意味着位于安全区域的顶部边缘。这在导航栏不存在时有效,但是一旦我添加它,安全区域的高度就会降低,并且安全区域顶部边缘的视图约束会移动到栏的底部。

我的问题是:如何以编程方式移动视图,使其与导航栏重叠,并位于状态栏下方,就像没有导航栏一样?

【问题讨论】:

你试过什么?一切如何设置?需要更多信息来帮助您。 您的问题令人困惑。它在导航栏不存在时有效,但当导航栏出现时,视图将附加到栏的底部(这是您想要的,不是吗?)? 这个问题简单明了,之前的2位评论者没有看。这家伙想知道如何在 ios 11 的导航栏下显示 edgesForExtendedLayout 不再起作用的视图。 【参考方案1】:

首先将您的视图放在您想要的位置,然后您可以为视图约束设置动画。只需将您的约束拖放到您的 ViewController 中。 此示例适用于向上移动的视图:

约束出口:

@IBOutlet weak var logoConstraint: NSLayoutConstraint!

那么当视图出现时:

self.logoConstraint.constant = -180

你也可以看这里:

https://savvyapps.com/blog/advanced-ios-animations-with-auto-layout

【讨论】:

【参考方案2】:

您可以使用“超级视图”约束。顶部超级视图约束是屏幕顶部(状态栏开始的位置)(在我的屏幕截图中是“视图”)。

【讨论】:

以上是关于在导航栏iOS 11安全区域下定位视图的主要内容,如果未能解决你的问题,请参考以下文章

iOS11中没有状态栏的导航栏与安全区域重叠

定位导航栏顶部的安全区域

安全区域和导航栏

iOS小技能:适配安全区域高度

在标签栏控制器中嵌入导航控制器会更改视图控制器的安全区域

iPhone X 上的导航栏不覆盖状态栏