提问人:Andrei Herford 提问时间:11/6/2023 更新时间:11/7/2023 访问量:21
如何将 UIScrollView 内容始终放置在 SafeArea 下方,即使内容高度小于 ScrollView 高度?
How to place UIScrollView content always below SafeArea, even if content height smaller than ScrollView height?
问:
TL;DR 根据 Apple 文档,仅当垂直内容大小大于滚动视图本身的高度时,才会影响内容插图。UIScrollView.ContentInsetAdjustmentBehavior
因此,当内容大小小于滚动视图高度时,内容插图不适应安全区域。
是否可以避免将内容始终置于安全区域下方?
详:
A 仅包含一个作为直接子视图,该子视图对屏幕边缘(superview,NOT 安全区域)的所有约束为 0。因此,延伸到上部安全区域以下。UIViewController
UIScrollView
UIScrollView
包含三个 .根据语言的不同,标签的行数和高度可能会有所不同。第一个标签以 0 顶部约束放置在 ScrollView 的 Content Layout Guide。第二个标签的顶部和底部为 0,约束第一个和第三个标签。第三个标签对内容布局指南的底部约束为 0。没什么特别的。UIScrollView
UILabels
根据文本/语言和/或设备的不同,标签可能会超过或不会超过 ScrollView 的高度。如果组合的标签高度/内容高度大于 ScrollView 的高度,则一切按预期工作,并且第一个标签会自动放置在顶部安全区域下方。
但是,当标签/内容高度小于 ScrollView 高度(无需滚动)时,第一个标签将放置在屏幕顶部边缘,因此其内容被状态栏的内容覆盖。
我不明白为什么只有当内容大小大于 scrollView hight 时才应用自动内容插图适应。这种行为背后的原因是什么?
最重要的是:如何避免这种情况,并将内容始终放在安全区域以下?
答:
滚动视图可以是:.ContentInsetAdjustmentBehavior
automatic
always
scrollableAxes
never
如果要“始终将内容置于安全区域下方”,请使用.always
至于为什么会有不同行为的选项?好吧,我猜它为可以利用它们的设计提供选项。
评论