【发布时间】:2020-06-12 16:34:51
【问题描述】:
在 iPhone 11 中,我得到一个看起来非常糟糕的底部填充。我可以逐个视图删除填充视图,但我必须向下移动所有内容(视图和按钮向上移动该填充的 b/c),这很烦人,因为我在一个大型应用程序中工作。有没有办法从整个应用程序中删除该填充,而不必通过代码安排每个视图?
这是我当前如何修复填充的示例(并重复所有在所述填充的 b/c 上移动的所有内容):
let padding = UIApplication.shared.keyWindow?.safeAreaInsets.bottom ?? 0
menuBarY.constant = 0 + padding
如果有人不熟悉这种特殊的填充,这就是 iPhone 11 中发生的情况:
【问题讨论】:
-
那个padding叫做安全区,不建议用按钮覆盖。
-
我不会用按钮覆盖它,我将按钮向上移动(如果它有一个底部按钮,就像图像上的那个),但我确实想用颜色覆盖那个安全空间,所以我需要使视图更大或在没有按钮的情况下将视图向下移动,此外,它确实将所有视图向上移动,因此由代码添加的任何带有坐标的视图都将位于不正确的位置。
-
你应该继续使用 safeArea。如果您不喜欢橙色视图和屏幕底部之间的间隙 - 将您的约束更改为目标
superview.bottom而不是safeArea.bottom。但也要更改橙色视图内的约束,以确保按钮位于 safeArea 上方。 -
@Kirow 这正是我想要做的/我正在做的,我只是想避免为每个视图手动执行它,特别是那些由代码生成的视图。这就是为什么我想要一种方法来全局删除安全空间并修复确实需要逐个视图修复的视图,而不是处理 40 多个实际上不需要任何更改的视图,除了通过该填充向下移动。而不是 5 个底部按钮需要手动修复
-
使用 UIToolbar。如果配置正确,它会自动向下延伸到屏幕的弯曲部分。
标签: ios swift xcode autolayout