我正在使用Autolayout自动设置单元格的高度。但我想在我的细胞中使用一些隐藏的UIViews。所以在某些行中它们应该被隐藏。这里的问题是,如果标签仍然隐藏,它会被autolayout识别并使用空间。
所以我想我需要更新标签的高度或我的约束的高度。
如果我使用Autolayout隐藏单元格中的UIElements,那么正确的方法是什么?
如何更新现有(来自Storyboard)约束?
编辑:发现我能够使用Storyboard更新约束,这是正确的处理方法吗? - 但是设置高度是正确的? (这只是一个演示项目)
答案 0 :(得分:4)
这是自动布局的标准任务。目前,有两种方法可以解决这个问题:
删除隐藏的观看次数
看起来非常简单,如果您不使用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