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

标签 ios safearealayoutguide

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

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 语句中相同的 View 吗?如果没有,还有其他解决方案吗?

此代码是否可以在没有相同的 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)
            ])
    }

最佳答案

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

stackViewBottomConstrols.heightAnchor.constraint(equalToConstant: 50)

成为这个

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)
     ])
      
}

关于ios - 如何修复 - safeAreaLayoutGuide' 仅适用于 iOS 11.0 或更新版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48390221/

相关文章:

iphone - 在 iPhone App 中生成暂停/不连续的蜂鸣声

ios - iPhone X Safe Area Top Guide 延迟计算/错误对齐

ios - 扩展 iOS 11 安全区域以包括键盘

ios - 报亭安装留下阴影 "installing"图标

ios - 为发布配置启用 NSAppTransportSecurity 并为调试/暂存配置禁用它的安全可靠的方法?

iphone - 为什么我的Xcode 4.6 本地化文件只能选择英文?

objective-c - UIColor SetFill不起作用

ios11 - 在共享扩展上检测安全区域插图

ios - iPhone X 安全区域不起作用

ios - 安全区域布局指南不适用于 Storyboard中的 UITableViewController