自我调整细胞,。 Autolayout和隐藏的UIViews

时间:2014-10-03 11:52:24

标签: ios swift autolayout

我正在使用Autolayout自动设置单元格的高度。但我想在我的细胞中使用一些隐藏的UIViews。所以在某些行中它们应该被隐藏。这里的问题是,如果标签仍然隐藏,它会被autolayout识别并使用空间。

所以我想我需要更新标签的高度或我的约束的高度。

如果我使用Autolayout隐藏单元格中的UIElements,那么正确的方法是什么?

如何更新现有(来自Storyboard)约束?

编辑:发现我能够使用Storyboard更新约束,这是正确的处理方法吗? - 但是设置高度是正确的? (这只是一个演示项目)

enter image description here

1 个答案:

答案 0 :(得分:4)

这是自动布局的标准任务。目前,有两种方法可以解决这个问题:

  1. 删除隐藏的视图
  2. 更改约束优先级
  3. 删除隐藏的观看次数

    看起来非常简单,如果您不使用UITableView(必须将其放回prepareForReuse),UICollectionView或者您的数据可以显示,那么您将不会遇到任何问题;在屏幕上,您刚刚删除了视图。

    删除视图是重的"如果选择这种方式,你需要三思而行。

    CustomCell.m

    - (void) prepareForReuse {
     [super prepareForReuse];
     // add removed views again
     // establish constraints
    }
    
    - (void) configureCell {
     // check if you need to hide a view
     [view removeFromSuperview];
    }
    

    更改约束优先级

    假设您有以下单元格:

      
         

    查看A

         

    查看B

         

    如果有时可以隐藏B,则为View A指定以下约束: 距离B到750的空间 底部空间以超级视图500

    如果将B设置为隐藏,则将空格更改为B = 500,将底部空间更改为superview = 750。

    撤消prepareForReuse

    中的更改