对于自定义tableviewCell 的时候采用NSLayoutConstraint这种自动布局。对于大小固定死的控件布局结果不会出现偏差。但是对于UIlabel这种根据输入内容可变行高的控件。运行结果会出现偏差。
思路是:先把约束条件写好。然后通过改变每个cell的行高(行高是通过UIlabel字体内容来计算的)。来拉伸各个控件的布局。这种思路对吗?请教。
假如可以推荐一些自动布局的资料给本人也行。慢慢研究。但是网上出现的这方面的资料都不怎么完整。
解决方案:40分
你不能在heightForRow里取cell,这样会造成死循环的。你就算把约束条件写好,也只能使Label的高度和cell的高度自适应,但是cell除了要将本人的高度自适应以外,还要在TableView的delegate里返回正确的高度,这是你的约束解决不了的情况,要改变cell的高度,只能通过reload cell,然后在heightForRow里返回正确的高度。
在自定义的Cell里公开一个类方法作为接口,这个接口接收一个数据源(例如你的Label的text),在这个类方法里计算高度并返回。