底部布局指南和不同屏幕格式的一般方法

General approach for bottom layout guide and different screen formats

到目前为止,我开发的大多数(如果不是全部)屏幕在底部布局指南的上下文中都有两种行为:

  1. 内容是静态的,需要锚定在底部:

    在这种情况下,我通常会创建一个底部布局指南,从最底部的 vc 子视图到它的超级视图(vc 根视图,代替 vc 底部安全区域)。如果底部对齐视图的背景颜色和 iphoneX 边缘的 root/parent 视图相同,这在这两种情况下都有效。

  2. 内容可滚动或必须 "overflow" 或底部子视图的背景颜色与 vc 不同。例如,底部按钮或标签栏必须与安全区域对齐,但它们的背景在 iPhoneX 中必须 "continue" 与非安全区域对齐。

    在这种情况下,我要么将 edge-inset/margin 添加到与不安全区域匹配的视图(导致正常方形屏幕的额外边距),要么我将不得不根据设备类型调整约束。

鉴于这些,有人知道 generalize/simplify 第二点的任何技巧吗?如果发现必须为几乎每个视图控制器添加依赖于设备的检查真的很难看。

这在技术上已经发生在 "automatically adjust view controller edge insets" 上,但仅适用于 scrollviews/tableviews。

TLDR; 是否可以让视图 "stretch" 到 iphoneX 中的非安全区域?要获得与 NavigationBar 基本相同的行为,但对于屏幕底部,无需硬编码任何内容?

另外:如果可以概括也包括带有标志或类似的第一个想要的行为。

我通常这样做的方式:

  • 像您发布的那样设置底部约束
  • 设置相对于底部安全区域(而不是超级视图)的顶部约束,并为您希望视图的高度设置偏移量。

这样,如果有安全区域,视图将自然向下延伸并在非安全区域手机上保持其正常外观,您只需确保布局该视图的内容以保持在安全区域和顶端。不需要特定于设备的代码。