这是否可以在同一个项目中支持iPhone X和iOS 8?

时间:2017-10-07 03:45:08

标签: xcode iphone-x

如果我在最少的XCode中触发"Safe area layout guide before ios 9".,似乎会发生Use Safe Area Layout Guides错误,这是否意味着无法支持这两个设备?有什么建议?谢谢。

1 个答案:

答案 0 :(得分:5)

完全可以支持iPhone X,其最低目标是iOS 8.(事实上,这就是我们目前在可汗学院应用程序中所拥有的。)

我们所做的是使用safeAreaInsets函数在我们的Swift代码中应用#available,如下所示:

public override func safeAreaInsetsDidChange() {
    if #available(iOS 11.0, *) {
        super.safeAreaInsetsDidChange()
        self.contentCatalogHeaderView?.safeAreaInsetsTopOverride = safeAreaInsets.top
        self.collectionViewLayout.safeAreaInsetsTop = safeAreaInsets.top
    }
}

从您的问题来看,听起来您正在讨论是否使用故事板中的复选框来启用安全区域插入。如果启用安全区域插入,我不确定故事板是否可以支持iOS 8(我怀疑它是不可能的)。但是,您始终可以存储对布局约束的引用,并使用上述#available函数在代码中更新其常量。

(在Objective-C中,代码看起来几乎完全相同,只需将其格式化为:

- (void)viewSafeAreaInsetsDidChange {
    if (@available(iOS 11.0, *)) {
        [super viewSafeAreaInsetsDidChange];
        [self.view setNeedsLayout];
    }
}