【发布时间】:2018-01-22 21:02:55
【问题描述】:
在我的应用程序中出现此错误 -
safeAreaLayoutGuide' is only available on iOS 11.0 or newer
在此代码中,错误出现了 3 次。基本上在我使用 safeArea 的每一行中。
NSLayoutConstraint.activate([
stackViewBottomConstrols.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
stackViewBottomConstrols.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor),
stackViewBottomConstrols.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor),
stackViewBottomConstrols.heightAnchor.constraint(equalToConstant: 50)
])
我可以检查IOS 11 是否可用并运行此代码并在else 语句中添加另一个代码,使用相同的代码但没有safeArea。这是否会显示与if 语句中相同的视图。如果没有,还有其他解决方案吗?
此代码可以在没有 IOS 11 的设备上运行吗? -
if #available(iOS 11.0, *) {
NSLayoutConstraint.activate([
stackViewBottomConstrols.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
stackViewBottomConstrols.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor),
stackViewBottomConstrols.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor),
stackViewBottomConstrols.heightAnchor.constraint(equalToConstant: 50)
])
} else {
NSLayoutConstraint.activate([
stackViewBottomConstrols.bottomAnchor.constraint(equalTo: view.bottomAnchor),
stackViewBottomConstrols.leadingAnchor.constraint(equalTo: view.leadingAnchor),
stackViewBottomConstrols.trailingAnchor.constraint(equalTo: view.trailingAnchor),
stackViewBottomConstrols.heightAnchor.constraint(equalToConstant: 50)
])
}
【问题讨论】:
-
见Safe Area Layout Guide。您是否也使用过 Storyboards...然后它会巧妙地更改 iOS 11
safeAreaLayoutGuide.top和 iOStopLayoutGuide.bottomAnchor 之间的值。如果您不使用情节提要并自己做,那么您必须检查 iOS 版本,然后使用#available提供适当的代码。如需更全面的分析,请参阅this question