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

关于 TableView 中 cell 的动态高度问题一二简述 #286

Closed itwyhuaing closed 6 years ago

itwyhuaing commented 6 years ago

当前使用版本 2.1.7 。整体来说,这是一个蛮不错的开源工具,但最近调试动态高度却无意踩了几个坑,现简述如下,望后续版本可以不断优化改进。

  1. cell 上的子控件如果直接添加到 self 而是不 self.contentView 的情况下,动态高度无法实现。
  2. 所有子控件全部添加在 self.contentView 上情况下,对于子控件的布局只有在自上而下依次添加约束的情况下才可以实现动态高度。 PS:以上问题是调试过程中发现总结的,如有纰漏或不足,勿怪勿喷!
gsdios commented 6 years ago

1.苹果应该是建议cell的所有子view都添加在contentView上的,否则可能会出现各种莫名其妙的bug,尽管sd内部可以采取一些兼容逻辑处理所有子view都直接添加在cell上的情况,但不建议这样处理 2.一般开发者都习惯从上而下进行布局,sd这样实现也是为了减少计算次数,无序的约束依赖可能会大大增加计算复杂度,当然如果后期找到更高效的布局算法肯定会考虑优化目前这种要自上而下添加约束依赖的问题