首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在UIView上以编程方式设置对safeAreaLayoutGuide的约束

在UIView上以编程方式设置对safeAreaLayoutGuide的约束
EN

Stack Overflow用户
提问于 2019-06-26 03:14:37
回答 1查看 41关注 0票数 0

我试图以编程方式设置对"safeAreaLayoutGuide“的约束,但似乎safeArea在UIView的"init”方法中不可用。

代码语言:javascript
复制
required init(foo: foo) 
{
    super.init(frame: .zero)

    self.addSubview(contentView)

    var layoutGuide: UILayoutGuide = self.layoutMarginsGuide
    if #available(iOS 11, *) {
        layoutGuide = self.safeAreaLayoutGuide
    }

    NSLayoutConstraint.activate([
        contentView.topAnchor.constraint(equalTo: layoutGuide.topAnchor),
        contentView.rightAnchor.constraint(equalTo: layoutGuide.rightAnchor),
        contentView.leftAnchor.constraint(equalTo: layoutGuide.leftAnchor),
        contentView.bottomAnchor.constraint(equalTo: layoutGuide.bottomAnchor)
    ])

    self.layoutIfNeeded()
}

因此,当设置了这些约束时,"layoutGuide“的框架是{{0, 0}, {0, 0}}的,所以很明显这里不是什么东西(除非在iOS 11以下的装饰品上)。

我尝试覆盖safeAreaInsetsDidChange函数,并在其中设置约束,但似乎该函数为时已晚,就像视图最初会出错,然后正确更新一样

我应该在哪里/什么时候设置对UIView的约束?

EN

回答 1

Stack Overflow用户

发布于 2019-06-26 05:15:55

您可以在viewDidLoad方法中设置视图,而不是在init中设置

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56760650

复制
相关文章

相似问题

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