我正在尝试通过编程方式针对“ safeAreaLayoutGuide”设置约束,但似乎UIView的“ init”方法中没有safeArea。
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上设置约束?
答案 0 :(得分:0)
您可以在viewDidLoad
方法内设置视图,而不是init