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