iOS - 安全区域布局不适用于iOS 9和iOS 10

时间:2017-12-25 16:28:02

标签: ios

以下是约束:

enter image description here

在iOS11上运行正常,但在iOS9和iOS 10上无效。

enter image description here

您可以通过here下载示例。

注意:必须将UISwitch添加到RedView并使用安全区域布局。

5 个答案:

答案 0 :(得分:2)

https://developer.apple.com/documentation/uikit/uiview/2891102-safearealayoutguide

safeAreaLayoutGuide是在iOS 11中引入的。难怪它在iOS 9和10中不起作用。

对于旧版本,请考虑使用layoutMargins属性。

let window = UIApplication.shared.keyWindow
let topPadding = window?.layoutMargins

答案 1 :(得分:1)

你试图实现这个目标吗? (左边是ios10,右边是ios 11) enter image description here

如果是,您可以做下一步:

  1. 从红色视图中删除安全区域
  2. 将UISwitch的顶部约束设置为视图控制器视图的安全区域,但不是红色视图的顶部。

答案 2 :(得分:0)

我检查了您的代码,发现红色视图的最高限制不正确。您的红色视图应该与安全区对齐,而不是超级视图。

答案 3 :(得分:0)

就我而言,将iOS 10的EdgesForExtendedLayout设置为一个空数组可以达到预期的效果。 这里的完整答案:https://stackoverflow.com/a/51247890/3885491

答案 4 :(得分:-1)

如果您正在使用故事板,那么它将起作用,因为Storyboard是向后兼容的。请记住,故事板隐藏了实际代码中的差异,不利于深入理解......

如果你是以编程方式进行的话,那么:

Safe Area Layout Guide Tutorial 。 SafeArea仅适用于iOS 11。对于非iOS 11,您必须使用topLayoutGuide.bottomAnchor

有关详情,请参阅On iOS, what are the differences between margins, edge insets, content insets, alignment rects, layout margins, anchors…?