首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复- safeAreaLayoutGuide‘仅在iOS 11.0或更高版本上可用

如何修复- safeAreaLayoutGuide‘仅在iOS 11.0或更高版本上可用
EN

Stack Overflow用户
提问于 2018-01-22 21:02:55
回答 2查看 4.1K关注 0票数 2

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

代码语言:javascript
复制
safeAreaLayoutGuide' is only available on iOS 11.0 or newer

在此代码中,错误出现3次。基本上在我使用safeArea的每一行中。

代码语言:javascript
复制
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的设备上工作吗?

代码语言:javascript
复制
        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)
            ])
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-22 21:07:34

safeAreaLayoutGuide只是顶底布局指南的替代品,添加了前导和尾随--当然,您的代码很好,这是在代码中创建约束以支持IOS 11和更低版本的唯一方法,但只能切换到与此无关的约束。

代码语言:javascript
复制
stackViewBottomConstrols.heightAnchor.constraint(equalToConstant: 50)

变成这样

代码语言:javascript
复制
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)
     ])
      
}
票数 5
EN

Stack Overflow用户

发布于 2018-01-22 21:11:10

如果您希望尽可能保持一致性,请在预iOS-11块中,将view.bottomAnchor替换为bottomLayoutGuide.topAnchor。在iOS 11之前,仍然有topLayoutGuidebottomLayoutGuide来帮助程序员在导航栏、选项卡栏等。否则,我觉得不错!

编辑:生成代码:

代码语言:javascript
复制
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: bottomLayoutGuide.topAnchor),
        stackViewBottomConstrols.leadingAnchor.constraint(equalTo: view.leadingAnchor),
        stackViewBottomConstrols.trailingAnchor.constraint(equalTo: view.trailingAnchor),
        ])
}
// This one doesn't care which iOS version it is
stackViewBottomConstrols.heightAnchor.constraint(equalToConstant: 50)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48390221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档