【问题标题】:What happens when attaching exactly the same NSLayoutConstraints to the same UIView multiple times?将完全相同的 NSLayoutConstraints 多次附加到同一个 UIView 时会发生什么?
【发布时间】:2016-11-26 23:05:02
【问题描述】:

问题说明了一切。它会被忽略吗?还是只是多次附加相同的约束?

如果我这样做,还会有任何性能问题吗?

我之所以问,是因为替代方案似乎是在附加约束时继续引用所有约束,然后再查找它们以做出此决定。如果我不必实现所有这些逻辑就好了。

【问题讨论】:

  • “相同约束”是什么意思?属性相同但常量不同还是完全相同?
  • 我的意思是“完全一样”。否则他们会一直依附并引发冲突,对吧?
  • 对,除非您禁用其中一些。性能方面,最好立即添加所有约束,并通过启用和禁用代码将更改应用到布局。多个约束不会被忽略,因为您可以随时更改其中的任何一个。此外,它们不会以任何显着方式影响性能。为什么要添加多个具有完全相同的值和属性的约束?
  • @Vlad 你应该看看SnapKit。它消除了使用约束的所有痛苦。

标签: ios objective-c autolayout nslayoutconstraint ios-autolayout


【解决方案1】:

是的,再次添加相同(相同的NSLayoutConstraint 对象)约束,将被忽略。

【讨论】:

    【解决方案2】:

    因为我还没有实际尝试过,但是如果您需要任何类型的动画,它会产生问题。

    例如,如果您需要使用动画移动 view,那么您将不得不为每个相同的约束多次更改相同类型的约束,这会带来代码痛苦。

    除了这个问题之外,多个相同的约束并不会真正产生冲突,但如果您在单个 ViewController 中对多个视图执行此操作,则会导致性能问题。

    【讨论】:

      猜你喜欢
      • 2015-02-14
      • 2018-06-03
      • 2012-01-25
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多