Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 安全区向后兼容性_Ios_Swift_Safearealayoutguide_Uiedgeinsets - Fatal编程技术网

Ios 安全区向后兼容性

Ios 安全区向后兼容性,ios,swift,safearealayoutguide,uiedgeinsets,Ios,Swift,Safearealayoutguide,Uiedgeinsets,我在试图以编程方式布局视图时遇到了一个问题,我似乎找不到一种简洁、非黑客的方法来解决它 我正在使用safeAreaInsets调整视图中某些元素的大小。在我在iOS 11之前的设备上试用之前,这一切都很好。很明显,由于缺少安全区域插图,我的子视图的大小会崩溃,一切都变得一团糟。当我使用旧版本的iOS时,我该怎么做 更具体地说,我可以在下面的扩展中实现什么,使其按预期工作 extension UIView { func compatibilityInsets() -> UIEdgeInse

我在试图以编程方式布局视图时遇到了一个问题,我似乎找不到一种简洁、非黑客的方法来解决它

我正在使用safeAreaInsets调整视图中某些元素的大小。在我在iOS 11之前的设备上试用之前,这一切都很好。很明显,由于缺少安全区域插图,我的子视图的大小会崩溃,一切都变得一团糟。当我使用旧版本的iOS时,我该怎么做

更具体地说,我可以在下面的扩展中实现什么,使其按预期工作

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