gsdios / SDAutoLayout

One line of code to implement automatic layout. 一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于做最简单易用的AutoLayout库。The most easy way for autoLayout. Based on runtime.
MIT License
5.9k stars 1.28k forks source link

解决重写tableViewCell的初始化方法会导致cell的高度计算失效的BUG #266

Open zhl5213 opened 6 years ago

zhl5213 commented 6 years ago

在一个项目中,我重写一个tableViewCell类的-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier方法的时候,使用两个reuseIdentifier来给该cell类设置了两种不同的显示模式。结果cell高度计算全部失效。

经过分析,是因为SDAutoLayout实现高度计算的时候,内部注册cell默认统一使用的类的名字作为reuseIdentifier,然后导致我的类中使用reuseIdentifier来判断显示模式的方法全部没有调用。

因此,新增了几个接口,里面加入了reuseIdentifier判断, 如果使用自定义的reuseIdentifier在cell中进行了业务判断处理,使用新的接口就行了

Jack-QoTn commented 6 years ago

晕,着了两天终于找到问题了,然后来Git告知,没想到这里已经解决。

使用SD时, 我在给TableView 赋值Frame 时,会造成 cellForRowAtIndexPath 不执行,而numberOfRowsInSection 执行。内部打印位置大小均无问题。

并且因为 使用了WMPageController ,三个item 中,前两个无问题,只有最后一个tableview 发生问题。