我的应用程序中有一个场景,我必须在运行时创建一个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属性的其他约束)
你能帮我找到解决这个一般问题的方法吗?谢谢