gpt4 book ai didi

ios - 在 ScrollView 中使用堆栈 View 并尊重安全区域插图

转载 作者:可可西里 更新时间:2023-11-01 03:50:35 24 4
gpt4 key购买 nike

我在垂直滚动的 UIScrollView 中有一个 UIStackView,所有内容都使用自动布局进行限制。 ScrollView 填充父 View ,堆栈 View 填充 ScrollView ,各种元素被添加到堆栈 View 中。为了让它与自动布局一起很好地发挥作用并定义 ScrollView 的内容大小,您还必须指定堆栈 View 的宽度。这是通过在堆栈 View 上添加宽度约束来完成的,等于 ScrollView 的宽度。在这一点上,没有什么是模棱两可的,它的行为完全符合预期。

现在,如果您想要添加边距以使元素不会拉伸(stretch)到屏幕的最左边缘和最右边缘,您可以更改堆栈 View 上的前导和尾随约束常量以在两侧插入 15pt例子。但是你必须确保将等宽约束常数更改为-30。这很有效,插入了可滚动的内容,仍然允许您在屏幕的远端滑动以滚动。

现在,iPhone X 问世了,横向时 15pt 的内边距已不再足够,因为内容被放置在外壳传感器下方。因此,您需要更新它以设置边距以遵守安全区域布局边距。您真的只想使用默认边距。您可以更改堆栈 View 的前导和尾随约束常量以使用 View 的布局边距(尊重安全区域插图),但这将不起作用,因为您的等宽约束常量不再是边距量的两倍,边距是动态的现在。

因此,解决此问题的一种方法是为堆栈 View 的前导和尾随以及宽度约束创建 IBOutlet,然后在布局边距更改时以编程方式调整它们(viewLayoutMarginsDidChange)。但我想知道是否有更好的方法,最好是在 Interface Builder 中工作的解决方案,不需要代码。

最佳答案

我找到了一种完全在 Interface Builder 中执行此操作的方法。不是直接在 ScrollView 中嵌入堆栈 View ,而是在 ScrollView 中添加一个 UIView 作为内容 View 。创建 leading、trailing、top 和 bottom 约束都等于 superview 的常量为 0,加上 ScrollView 的等宽约束。然后将堆栈 View 嵌入到这个内容 View 中。为堆栈 View 创建等于父 View 的边距¹,加上顶部和底部的前导和尾随约束。

因此您的设置将是:

- view
-- scroll view
--- view
---- stack view

这将确保在横向的 iPhone X 上您可以在左右边缘滚动,滚动条位于屏幕的最右边缘,堆栈 View 位于安全区域内。

¹ 我发现常量 8 增加了足够的填充,让人感觉不错。

关于ios - 在 ScrollView 中使用堆栈 View 并尊重安全区域插图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46505999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com