Ios 安全区向后兼容性
我在试图以编程方式布局视图时遇到了一个问题,我似乎找不到一种简洁、非黑客的方法来解决它 我正在使用safeAreaInsets调整视图中某些元素的大小。在我在iOS 11之前的设备上试用之前,这一切都很好。很明显,由于缺少安全区域插图,我的子视图的大小会崩溃,一切都变得一团糟。当我使用旧版本的iOS时,我该怎么做 更具体地说,我可以在下面的扩展中实现什么,使其按预期工作Ios 安全区向后兼容性,ios,swift,safearealayoutguide,uiedgeinsets,Ios,Swift,Safearealayoutguide,Uiedgeinsets,我在试图以编程方式布局视图时遇到了一个问题,我似乎找不到一种简洁、非黑客的方法来解决它 我正在使用safeAreaInsets调整视图中某些元素的大小。在我在iOS 11之前的设备上试用之前,这一切都很好。很明显,由于缺少安全区域插图,我的子视图的大小会崩溃,一切都变得一团糟。当我使用旧版本的iOS时,我该怎么做 更具体地说,我可以在下面的扩展中实现什么,使其按预期工作 extension UIView { func compatibilityInsets() -> UIEdgeInse
extension UIView {
func compatibilityInsets() -> UIEdgeInsets {
if #available(iOS 11.0, *) {
return self.safeAreaInsets
} else {
//what goes here?
return self.olderVersionOfInsets
}
}
}
下面是我如何使用此扩展方法的示例:
var minimumHeaderHeight: CGFloat {
//allows the header height to be 70 below navigation bar
return 70 + view.compatibilityInsets().top
}
添加了
安全区域插图
,以帮助避免内容消失在iPhone X中的“缺口”后面。。。它只支持iOS 11 IIRC
因此,iOS 10及以下版本的替代方案是return.zero
,因为不需要定义任何安全区域
.zero
在这种情况下被推断为UIEdgeInsets
类型,因此相当于调用UIEdgeInsets.zero