自动布局:顶部边缘固定到安全区域时没有反弹效果

Posted

技术标签:

【中文标题】自动布局:顶部边缘固定到安全区域时没有反弹效果【英文标题】:Autolayout: No bounce effect when top edge is pinned to Safe Area 【发布时间】:2018-06-11 20:18:44 【问题描述】:

关于基于 Swift 4 的 Xcode 9.2 中奇怪的自动布局行为的快速问题。

所以我的场景是由一个 UIScrollView 在所有 4 个边上固定到 UIViewController 组成的。在UIScrollView 中有一个UIView ("Content View"),它也固定在其 Superview 的所有 4 个边上。现在的问题是,如果我在内容视图中有另一个UIView,并且我将顶部边缘固定到安全区域而不是超级视图,滚动仍然有效,但到达顶部时没有反弹行为。它只是停在那里。

我想在页面到达顶部时实现橡皮筋效果的行为,而内部视图由于 iPhone X 缺口而被剪掉(因此限制到顶部的安全区域而不是 Superview)我做错了吗这里?看看下面的 gif。

首先:UIView 固定到内容视图的超级视图 - notice the bounce effect is active

第二个:UIView 固定到内容视图的安全区域 - there is no bounce and the scrolling stops immediately

【问题讨论】:

【参考方案1】:

尝试以下方法:

    UIScrollView 将 0(到安全区域)固定到所有 4 个边缘。 UIView(“内容视图”)将所有 4 条边固定(到 Superview)并将 Equal Heights 设置为 View 并对齐中心 X。 将第二个UIView 放在第一个内部,并固定所有 4 个边(到 Superview)。注意:如果您执行了前 2 个步骤,您甚至无法选择将其固定到安全区域。

一切都按预期执行,没有剪辑,当它到达顶部时你会得到弹跳。

【讨论】:

以上是关于自动布局:顶部边缘固定到安全区域时没有反弹效果的主要内容,如果未能解决你的问题,请参考以下文章

使用自动布局设置 layoutMargins

自动布局无法正确处理 iPhone X 缺口

带有自动布局的 UIScrollView:后代在查看区域之外,但视图不滚动

使用自动布局居中或固定到顶部

图像视图autolayout从水平边缘固定到60pt,但自动刻度高度?

自动布局对齐问题