如何在运行时添加视图重新布局UITableViewCell

时间:2017-02-16 14:51:08

标签: ios objective-c uitableview autolayout

我的应用程序中有一个场景,我必须在运行时创建一个UITableViewCell内容,具体取决于我从网络获取的值。我将尝试解释我尝试实现的目标以及我所面临的问题。我想听听整个问题的一般解决方案,而不是具体的答案。

尝试

  • 我有一个带有自定义UITableViewCell的UITableView,它有一些容器视图,可以包含取决于运行时值的视图。

  • UITableViewCell使用启用了自动布局的故事板设计。

  • 对于包含动态视图的视图,我将高度约束定义为v.height >= 0。但是界面构建器的高度大于零,我希望在添加视图后重新布局单元格。

  • 动态视图通常是垂直添加的行,但有一种情况是我正在水平添加视图。

  • 我使用了OAStackView,替代UIStackView用于iOS9之前的设备。

  • 我在自定义UITableViewCell的awakeFromNib方法中添加动态视图

  • 我试图调用一些方法,希望他们能更新我的布局。我使用的最后一个[self setNeedsUpdateConstraints]

  • 在包含UITableView的视图控制器上,我试过

    myTableView.rowHeight = UITableViewAutomaticDimension; myTableView.estimatedRowHeight = 300;

并且

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath *)indexPath { return UITableViewAutomaticDimension; }

调查结果和问题

  • 我的UITableViewCell似乎已创建并且是动态视图。然而,看起来单元格的总高度与我在故事板中定义的高度完全相同。

  • 查看容器高度也与我在故事板上设计它们相同,看起来像v.height> = 0不是影响这些视图的唯一约束(我没有定义任何有关height属性的其他约束)

  • 第一个视图似乎添加得很好,但其他视图非常舒展(我认为这是因为没有地方)

你能帮我找到解决这个一般问题的方法吗?谢谢

根据请求编辑:单元格图片enter image description here

0 个答案:

没有答案