🖖高性能的自动计算采用 Autolayout 布局的 UITableViewCell 和 UITableViewHeaderFooterView 的高度,内部自动管理高度缓存。
Autolayout
布局【Xib
、StoryBoard
、Masonry
、SnapKit
、SDAutoLayout
…】的 UITableViewCell
和 UITableViewHeaderFooterView
的高度,支持横竖屏,内部自动管理高度缓存,已兼容 Swift 。pod 'UITableViewDynamicLayoutCacheHeight'
pod install
#import <UITableViewDynamicLayoutCacheHeight/UITableViewDynamicLayoutCacheHeight.h>
pod 'UITableViewDynamicLayoutCacheHeight/Category'
Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. To integrate UITableViewDynamicLayoutCacheHeight, add the following to your Cartfile.
github "liangdahong/UITableViewDynamicLayoutCacheHeight" ~> 5.2.0
clone https://github.com/liangdahong/UITableViewDynamicLayoutCacheHeight.git
】UITableViewDynamicLayoutCacheHeight
文件夹下的全部内容拖拽到你的项目。Cell
使用 Xib
构建 「 也支持纯代码布局,只要是使用 Autolayout 均可 」- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
中的代码一致即可。UITableView
已经自动算高
且自动缓存高度
了,效果如下:更多使用请参考 UITableView+BMDynamicLayout.h 文件的 API。
提前创建 Cell,然后填充内容,然后强制布局,然后获取 Cell 中 MaxY 最大的 View,然后取此 View 的 MaxY 为 Cell 所需高度【所以保证 Cell 中的 View 的 MaxY 最大的值即为 Cell 需要的高度
至关重要】,内部会自动管理缓存的保存和清空操作。
系统自动算高的缺陷大家应该都比较清楚,如:没缓存,重复计算,界面跳动,由于是边滚边算在布局复杂的 Cell 有一些问题,只支持iOS8+,布局必须要填充整个 Cell,在布局的时候一些场景需要设置优先,不然会报约束冲突。
UITableView-FDTemplateLayoutCell 最开始我使用是此框架,同时 API 设计也参考自 FDTemplateLayoutCell,还用了几张素材,😁,在此感谢了 ,但后面有一些 Bug 一直没处理 😭,布局必须要填充整个 Cell,在布局的时候一些场景需要设置优先级,不然会报约束冲突,就迁移到了 UITableViewDynamicLayoutCacheHeight。
基于此框架实现了一个简陋的微信朋友圈功能 微信朋友圈 代码是几年前随便写的 😂,没准备调整了,感兴趣的可以瞧瞧。
UITableViewDynamicLayoutCacheHeight is released under the MIT license. See LICENSE for details.