- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
- FrameFeedCell *cell = [tableView dequeueReusableCellWithIdentifier:FrameFeedCellIdentifier forIndexPath:indexPath];
- FrameModel *frameModel = self.data[indexPath.row];
- cell.model = frameModel;
- return cell;
- }
- - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
- FrameModel *frameModel = self.data[indexPath.row];
- return frameModel.cellHeight;
- }
- - (void)setModel:(FrameModel *)model {
- if (!model) return;
- _model = model;
- FDFeedEntity *entity = model.entity;
- self.titleLabel.frame = model.titleFrame;
- self.titleLabel.text = entity.title;
- }
优缺点
近些年,App 越来越推许体验至上,随随便便乱写一通的话已经很难让用户买帐了,顺滑的列表就是个中很重要的一点。如不雅一个 App 的页面滚动起来老是卡顿卡顿的,轻则被算作不和教材来吐槽或者衬托“我们的 App balabala…”,重则直接卸载。正好比来在优化这一可儿,总结记录下。
缓存行高方法有现成的看悟单便利,固然 UITableView-FDTemplateLayoutCell 已经处理的很好了,然则 Auto Layout 对机能照样会有部分消费;手动计算 frame 方法所有的地位都须要计算,比较麻烦,并且在数据量很大年夜的情况下,大年夜量的计算对数据展示时光会有部分影响,响应的回报就是机能会更好一些。
文本异步衬着
当显示大年夜量文本时,CPU 的压力会异常大年夜。对此解决筹划只有一个,那就是自定义文本控件,用 TextKit 或最底层的 CoreText 对文本异步绘制。尽管这实现起来异常麻烦,但其带来的优势也异常大年夜,CoreText 对象创建好后,能直接获取文本的宽高等信息,避免了多次计算(调剂 UILabel 大年夜小时算一遍、UILabel 绘制时内部再算一遍);CoreText 对象占用内存较少,可以缓存下来以备稍后多次衬着。
推荐阅读
【译者注】在本文中,作者介绍了即将在9.21宣布的Java 9新特点,除了最重要的模块化以外,还涉及到编译,对象,协定,缓存等新特点,也说起了在此次版本中移除的功能,供Java爱好者浏览和>>>详细阅读
本文标题:iOS中关于列表滚动流畅的一些探讨
地址:http://www.17bianji.com/lsqh/37290.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示