我有一个viewController持有这样的约束:
self.subviewConstraint = NSLayoutConstraint(item: self.subviewConstraint,
attribute: .bottom,
relatedBy: .equal,
toItem: self.bottomLayoutGuide,
attribute: .bottom,
multiplier: 1,
constant: 0)
并且正在向我显示此警告:
'bottomLayoutGuide'在iOS 11.0中已被弃用:使用view.safeAreaLayoutGuide.bottomAnchor而不是bottomLayoutGuide.topAnchor
我只是在寻找设置锚点的示例,而不是像这样的NSLayoutConstraint
,并且我还不完全理解此警告...“改为使用view.safeAreaLayoutGuide。 bottomAnchor 的bottomLayoutGuide。 topAnchor ”? safeAreaLayoutGuide
的底部锚点与bottomLayoutGuide
的底部锚点如何匹配?在哪里可以找到关于此的图形说明?
我应该如何正确重写约束以保持其当前行为?
答案 0 :(得分:0)
TopLayoutGuide 和 bottomLayoutGuide 。
您可以使用新的 NSLayoutAnchor 以此来更新代码:
self.subviewConstraint = self.subviewConstraint?.firstItem?.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor)
,或者您可以在问题中使用 NSLayoutConstraint 的初始化程序:
self.subviewConstraint = NSLayoutConstraint(item: self.subviewConstraint?.firstItem as Any,
attribute: .bottom,
relatedBy: .equal,
toItem: view.safeAreaLayoutGuide,
attribute: .bottom,
multiplier: 1,
constant: 0)
请注意,在 NSLayoutConstraint 初始化方法中,我已将self.subviewConstraint
参数更改为self.subviewConstraint.firstItem
,因为您使用的是NSLayoutConstraint。
我想这是您做的错字。
在这里,您可以找到有关 iOS 11 及更高版本中新的 SafeArea 行为的一些图形说明: iOS Safe Area - Medium.com
此外,您还说过“我只是在寻找设置锚点的示例,而不是NSLayoutConstraints” ,但我想明确指出, NSLayoutAnchor < / strong>返回 NSLayoutConstraint 。 (Apple NSLayoutAnchor documentation)