App*_*Dev 3 ios nslayoutconstraint ios11 safearealayoutguide
我有一个 viewController 持有这样的约束:
self.subviewConstraint = NSLayoutConstraint(item: self.subviewConstraint,
attribute: .bottom,
relatedBy: .equal,
toItem: self.bottomLayoutGuide,
attribute: .bottom,
multiplier: 1,
constant: 0)
Run Code Online (Sandbox Code Playgroud)
我收到以下警告:
iOS 11.0 中已弃用“bottomLayoutGuide”:使用 view.safeAreaLayoutGuide.bottomAnchor 而不是 BottomLayoutGuide.topAnchor
我只是找到设置锚点而不是像NSLayoutConstraint这样的 s 的示例,并且我不完全理解此警告...“使用 view.safeAreaLayoutGuide.bottomAnchor而不是 BottomLayoutGuide.topAnchor ”?safeAreaLayoutGuide的底部锚点与顶部锚点如何匹配bottomLayoutGuide?我在哪里可以找到对此的良好图形解释?我应该如何正确地重写我的约束以保持其当前的行为?
TopLayoutGuide和BottomLayoutGuide自iOS 11起已弃用。
您可以利用新的 NSLayoutAnchor来更新您的代码:
self.subviewConstraint = self.subviewConstraint?.firstItem?.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor)
Run Code Online (Sandbox Code Playgroud)
或者您可以使用NSLayoutConstraint的初始化程序,如您的问题所示:
self.subviewConstraint = NSLayoutConstraint(item: self.subviewConstraint?.firstItem as Any,
attribute: .bottom,
relatedBy: .equal,
toItem: view.safeAreaLayoutGuide,
attribute: .bottom,
multiplier: 1,
constant: 0)
Run Code Online (Sandbox Code Playgroud)
请注意,我已将您的self.subviewConstraint参数更改self.subviewConstraint.firstItem为NSLayoutConstraint初始化方法中的参数,因为您使用 NSLayoutConstraint 作为项目。我想这是你犯的某种打字错误。
在这里,您可以找到有关iOS 11及更高版本中新SafeArea行为的一些很好的图形解释: iOS Safe Area - Medium.com
另外,您说“我只是在寻找设置锚点而不是 NSLayoutConstraints 的示例”,但我想明确指出NSLayoutAnchorconstraint(equalTo:)的方法返回NSLayoutConstraint。(苹果 NSLayoutAnchor 文档)
| 归档时间: |
|
| 查看次数: |
829 次 |
| 最近记录: |