【问题标题】:Get reference of Top constraint获取顶部约束的参考
【发布时间】: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
}

如果firstItemsecondItemSafe Area.Top,我该如何比较?

【问题讨论】:

  • IBOUtlet,和你的代码做个连接,你也可以通过约束标识符获取
  • @ReinierMelian 我附上了截图以供理解。我正在尝试以编程方式获取任何给定视图。
  • 您需要手动在情节提要或 xib 中添加约束对吗?
  • 我必须对与SafeArea.Top 关联的给定视图的 topConstraint 进行一些调整。这就是我试图获得参考的原因。
  • 如果你想引用所有视图的顶级约束,我认为这种功能毫无意义,你需要在其上放置一个标识符或在情节提要中手动创建时将其设为 Outlet ,如果您稍后在您的代码或某人的代码上进行此更改,这将是痛苦的,但这是唯一的方法,或者至少是我知道的唯一方法,firstAttribute 和 secondAttribute 比较不可靠

标签: ios swift autolayout constraints safearealayoutguide


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-01-30
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多