UITableViewCell中嵌入UITableView的约束冲突问题

在UITableViewCell中嵌入UITableView的时候,引发以下冲突问题:

2019-11-11 19:20:44.785146+0800 dudu_oc_master[11212:370558] [LayoutConstraints] Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. 
    Try this: 
        (1) look at each constraint and try to figure out which you don't expect; 
        (2) find the code that added the unwanted constraint or constraints and fix it. 
(
    "",
    "",
    "",
    "",
    "",
    "= UITableView:0x7fb174989000.bottom + 12>",
    "",
    "",
    ""
)

Will attempt to recover by breaking constraint 

这个问题发生在我进行折叠显示内层tableView的时候(通过更新约束),比较怪异的是居然与UITableViewCellContentView有关,我在项目中没有手动给UITableViewCellContentView设置过高度,估计是系统auto layout过程中生成的。冲突的原因很明显,由于cell复用的原因,复用时UITableViewCellContentView的高度是85,然后将内层的tableView高度约束调整到了204.20,后者明显大于前者,而后者又包含于前者,就引发了冲突。

最后发现解决问题如下:
将内层tableview到contentView的bottom的约束的priority设置得比UITableViewCellContentView.height更要低就可以了。
这样复用时就会优先应用UITableViewCellContentView.height去做布局,但是请记住你更新了内层的tableview高度此时并没有得到体现,需要执行以下代码:

外层tableView.beginUpdates()
外层tableView.endUpdates()

你可能感兴趣的:(UITableViewCell中嵌入UITableView的约束冲突问题)