首页 > 解决方案 > 获取顶部约束的参考

问题描述

我正在尝试获取与安全区域相关联的给定视图的 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如果orsecondItem是,我如何比较Safe Area.Top

标签: iosswiftautolayoutconstraintssafearealayoutguide

解决方案


通过访问该字段,您正在做的事情constraints是不安全的。推荐的方法是为约束创建一个 IBOutlet


推荐阅读