首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SafeArea向后兼容性

SafeArea向后兼容性
EN

Stack Overflow用户
提问于 2018-06-20 18:07:59
回答 1查看 231关注 0票数 2

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

我使用safeAreaInsets在我的视图中调整一些元素的大小。在我在iOS 11之前的设备上试用之前,这个功能运行得很好。显然,由于缺少safeAreaInsets,我的子视图的大小变得混乱,一切变得一团糟。在使用旧版本的iOS时,我应该回退到什么地方。

更具体地说,我可以在下面的扩展中实现什么才能像预期的那样工作?

代码语言:javascript
复制
extension UIView {

func compatibilityInsets() -> UIEdgeInsets {
        if #available(iOS 11.0, *) {
            return self.safeAreaInsets
        } else {
            //what goes here?
            return self.olderVersionOfInsets
        }
    }
}

下面是我如何使用这个扩展方法的一个示例:

代码语言:javascript
复制
var minimumHeaderHeight: CGFloat {
    //allows the header height to be 70 below navigation bar
    return 70 + view.compatibilityInsets().top
}
EN

回答 1

Stack Overflow用户

发布于 2018-06-20 18:11:11

添加safeAreaInsets是为了帮助避免内容在iPhone X的“缺口”后面消失……它只支持iOS 11 IIRC。

因此,iOS 10及更低版本的替代方案是return .zero,因为不需要定义任何安全区域。

本例中的.zero被推断为UIEdgeInsets类型,因此等效于调用UIEdgeInsets.zero

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50945625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档