UITableViewCell底部边距约束

时间:2016-12-30 21:13:12

标签: ios xcode uitableview autolayout

我有以下UITableViewCell,根据条件redView.heightConstraint.constant = 0,这可以正常工作。

但是底部空间结果是+ b = 20 ,其中

a = 10   between green an red view
b = 10   between red and bottom of the superview

当redView的高度设置为0时,预期的底部空间应 10. 当redView高度设置为0时,如何设置约束以达到预期的底部边距10 ?

enter image description here

1 个答案:

答案 0 :(得分:5)

更改红色视图的高度不会改变其相对于超视图底部的位置,因此绿色视图首先在该视图的顶部有10 pix边距,另外还有{{} 1}}到超级视图的底部。

选项1:更改2个约束

  1. 10 pix
  2. redView.heightConstraint.constant = 0
  3. 2 constraints must be changed

    将这两个变化放在一起,红色视图将有效地成为其超视图底部的零高度视图;绿色视图也会效仿。

    选项2:将红色视图嵌入不可见的占位符

    • redView.bottomConstraint.constant = 0

    embedded view in placeholder

    占位符(灰色矩形)锚定在superview的底部;它包含红色视图和垂直间隔。蓝色视图不再相对于红色视图的顶部而是与其占位符的顶部间隔开。这个解决方案涉及更少的代码行,交易的资源稍微复杂一些。

    无论哪种方式,您可以在首次加载视图时存储Storyboard资源placeholder.heightConstraint.constant = 0以避免硬编码:

    constant