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

问题描述:

看来如果我在至少XCode中触发Use Safe Area Layout Guides,将出现"Safe area layout guide before ios 9".错误,这是否意味着支持这两种设备是不可能的?有什么建议?谢谢。这是否可以在同一个项目中支持iPhone X和iOS 8?

+0

在所有的测试中,我所做的答案是否定的我,直到我决定去检查挣扎的。有多少用户仍然使用iOS 8用于我的应用程序,并且它没有。 – MwcsMac

这是完全可以支持iPhone X与iOS 8的最低目标(事实上,这正是我们目前在汗学院的应用程序。)

我们所做的是在我们的斯威夫特应用safeAreaInsets使用#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]; 
    } 
}