iOS - 动态UITableViewCell类的Autolayout约束错误

时间:2016-10-11 19:57:09

标签: ios uitableview autolayout height

我有一个UITableViewController,它会显示各种自定义UITableViewCell子类。其中一些类具有动态内容,可能会改变单元格的大小。

部分动态内容是通过asynchronous operations生成的,例如下载图片,数据等。然后结果用于确定单元格的正确大小。

当单元格更新其布局时,我收到了很多约束警告。它似乎打破了一些UITableView约束(即在数据下载之前单元格的高度为100,然后更新为250)

我发现修复这些警告的唯一方法是向delegate和{{1} {{1}中触发的单元格类添加UITableViewController方法}};

这是有问题的,因为它最终会重新触发一些单元的异步操作等。

我的问题是,如果您的自定义[tableView reloadData]类具有动态内容,可以在表最初加载并显示单元格后更改单元格的大小,那么最佳方法是什么?

样本单元格布局:

  • 的UILabel

  • 的UIImage

  • UICollectionView 仅在为当前用户找到对象时显示。它可以显示对象数据的1-3行(从而改变单元格的高度),或者如果没有为用户找到对象,则会隐藏。

    < / LI>
  • 的UIButton

以下是示例警告:

UITableViewCell

2 个答案:

答案 0 :(得分:1)

事实证明,在UITableViewCell中使用UIButton时会出现某种错误。

更改UIButton垂直间距的约束优先级可修复错误:

<强>当时:

[NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@&#34; V:| [label(32)] - [imageView(100)] - 16- [button(buttonHeight)] -8 - |&#34; options:NSLayoutFormatAlignAllCenterX metrics:metrics views:views]];

立即

[NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@&#34; V:| [label(32)] - [imageView(100)] - 16- [button(buttonHeight)] -8 @ 999- < /强> |&#34; options:NSLayoutFormatAlignAllCenterX metrics:metrics views:views]];

答案 1 :(得分:0)

您必须设置

when: '"lxc.group = mdblxc" in item.item.container_config'

之后,一切都与约束相关