如图,这是一个cell:
cell中的黑色小标签数量不定,每次给cell赋值model的时候都要先将它们全部remove再循环创建,这也就导致了tableView很卡。如果让你们来做,你们会怎么优化?
如图,这是一个cell:
cell中的黑色小标签数量不定,每次给cell赋值model的时候都要先将它们全部remove再循环创建,这也就导致了tableView很卡。如果让你们来做,你们会怎么优化?
4 回答4.8k 阅读
1 回答1.6k 阅读✓ 已解决
2 回答1.6k 阅读
1 回答1.5k 阅读
1 回答1.5k 阅读
866 阅读
785 阅读
简答: 缓存.
核心代码提示:
var modelHeightCache:<Model,CGFloat> = [:]
按你上面的说法,比较卡可能是由于 tableView 每次需要自动计算 cell 的高度导致比较卡.
这个的话你可以缓存每一个 model 对应的 cell 的高度. 因为同样的内容每次显示的高度应该是一样的,所以一次计算之后下一次就可以缓存上了.
另外,如果你在 标签的的创建比较费时,你甚至可以缓存 tags 对应的 tagsView(假设你的标签容器是 tagsView)
核心代码提示:
var tagsViewCache:<TagsHash:TagsView> = [:]
总而言之,通过缓存减少重复的计算及布局工作.