【发布时间】:2019-05-08 07:58:56
【问题描述】:
我正在尝试获取与安全区域相关联的给定视图的 topConstraint(例如:附加)的引用 - 顶部。
我创建了一个运行良好的函数,但逻辑上不可靠。
func getSafeAreaTopConstraint(view: UIView, in targetView: UIView) -> NSLayoutConstraint? {
let constraints = targetView.constraints.filter({ $0.firstItem as? UIView == view || $0.secondItem as? UIView == view })
return constraints.filter({ $0.firstAttribute == .top || $0.secondAttribute == .top }).first
}
我想创建一个比较如下的函数
func getSafeAreaTopConstraint(view: UIView, in targetView: UIView) -> NSLayoutConstraint? {
let constraints = targetView.constraints.filter({ ($0.firstItem as? UIView == view && $0.secondItem == SafeArea.Top) || ($0.secondItem as? UIView == view && $0.firstItem == SafeArea.Top) })
return constraints.filter({ $0.firstAttribute == .top || $0.secondAttribute == .top }).first
}
如果firstItem 或secondItem 是Safe Area.Top,我该如何比较?
【问题讨论】:
-
IBOUtlet,和你的代码做个连接,你也可以通过约束标识符获取
-
@ReinierMelian 我附上了截图以供理解。我正在尝试以编程方式获取任何给定视图。
-
您需要手动在情节提要或 xib 中添加约束对吗?
-
我必须对与
SafeArea.Top关联的给定视图的 topConstraint 进行一些调整。这就是我试图获得参考的原因。 -
如果你想引用所有视图的顶级约束,我认为这种功能毫无意义,你需要在其上放置一个标识符或在情节提要中手动创建时将其设为 Outlet ,如果您稍后在您的代码或某人的代码上进行此更改,这将是痛苦的,但这是唯一的方法,或者至少是我知道的唯一方法,firstAttribute 和 secondAttribute 比较不可靠
标签: ios swift autolayout constraints safearealayoutguide