我试图以编程方式设置对"safeAreaLayoutGuide“的约束,但似乎safeArea在UIView的"init”方法中不可用。
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的约束?
发布于 2019-06-26 05:15:55
您可以在viewDidLoad方法中设置视图,而不是在init中设置
https://stackoverflow.com/questions/56760650
复制相似问题