如何修复 - safeAreaLayoutGuide' 仅适用于 iOS 11.0 或更高版本

Vik*_*tor 1 ios safearealayoutguide

在我的应用程序中,我有这个错误 -

safeAreaLayoutGuide' is only available on iOS 11.0 or newer
Run Code Online (Sandbox Code Playgroud)

在这段代码中,错误出现了 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)
        ])
Run Code Online (Sandbox Code Playgroud)

我可以检查是否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)
            ])
    }
Run Code Online (Sandbox Code Playgroud)

Sh_*_*han 5

safeAreaLayoutGuide只是顶部、底部布局指南的替代品,添加了前导和尾随 - 当然你的代码很好用,这是在代码中创建约束以支持 IOS 11 及更低版本的唯一方法,但只能切换对于无关紧要的约束

stackViewBottomConstrols.heightAnchor.constraint(equalToConstant: 50)
Run Code Online (Sandbox Code Playgroud)

成为这个

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)
     ])
} else {
    NSLayoutConstraint.activate([
        stackViewBottomConstrols.bottomAnchor.constraint(equalTo: self.bottomLayoutGuide.topAnchor),
        stackViewBottomConstrols.leadingAnchor.constraint(equalTo: view.leadingAnchor),
        stackViewBottomConstrols.trailingAnchor.constraint(equalTo: view.trailingAnchor)
     ])
      
}
Run Code Online (Sandbox Code Playgroud)