作者: wq04200 | 来源:发表于2016-10-22 17:30 被阅读14次

一、cell自适应高度

 self.tableView.estimatedRowHeight = 60;//预设高度
//或者:estimatedHeightForRowAtIndexPath代理方法中设置
    self.tableView.rowHeight = UITableViewAutomaticDimension;

设置的AutoLayout 约束必须让 cell 的 contentView知道如何自动伸展。关键点是 contentView 的 4 个边都要设置连接到内容的约束,并且内容是会动态改变尺寸的。其实只要记住,我们在设置约束时只要能让contentView能被内容撑起来就可以了。
参考http://www.jianshu.com/p/bbe8094e147d

缓存cell的高度,代码如下:

@property (nonatomic, strong) NSMutableDictionary *heightAtIndexPath;//缓存高度所用字典
#pragma mark - UITableViewDelegate
-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
{
      NSNumber *height = [self.heightAtIndexPath objectForKey:indexPath];
      if(height)
        {
            return height.floatValue; 
         }else 
         {
             return 100;
        }

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
   {
         NSNumber *height = @(cell.frame.size.height); 
         [self.heightAtIndexPath setObject:height forKey:indexPath];
  }

就是用一个字典做容器,在cell将要显示的时候在字典中保存这行cell的高度。然后在调用estimatedHeightForRowAtIndexPath方法时,先去字典查看有没有缓存高度,有就返回,没有就返回一个大概高度。这段代码其实可以写在viewController的基类里面,这样写一遍就可以每个地方都能缓存cell的高度了
(选自http://www.jianshu.com/p/64f0e1557562)
这篇文章的demo的Github地址:UITableViewCellHeightDemo

二、优化--------(待增加、修改)

//下面的2段代码可以加上 可以有效提高流畅度
cell.layer.shouldRasterize = YES;
cell.layer.rasterizationScale = [UIScreen mainScreen].scale;

1使用不透明视图。
极大地提高渲染的速度,如非必要,可以将table cell及其子视图的opaque属性设为YES(默认值)。其中的特例包括背景色,它的alpha值应该为1(例如不要使用clearColor);图像的alpha值也应该为1,或者在画图时设为不透明。

2、复用cell

3、不要阻塞主线程。最常见的就是网络请求、更新数据时,整个界面卡住不动,这种现象的原因就是主线程执行了耗时很长的函数或方法,在其执行完毕前,无法绘制屏幕和响应用户请求,解决办法就是使用多线程,让子线程去执行这些函数或方法。(待了解、、、)

4、自动载入更新数据对用户来说也很友好,这减少了用户等待下载的时间,例如每次载入50条信息,那就可以在滚动到倒数第10条以内时,加载更多信息:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{
         if (count - indexPath.row < 10 && !updating) {
          updating = YES;[self update];}
          }
       // update方法获取到结果后,设置updating为[NO]

相关文章

  • 商城典型表设计

    后台用户表 角色表 权限表 商品类型表 属性表 商品属性表 商品分类表 商品表 会员表 购物车表 订单表 订单商品...

  • 宽表、窄表、维度表、事实表

    一、概念 宽表:把多个维度的字段都放在一张表存储,增加数据冗余是为了减少关联,便于查询,查询一张表就可以查出不同维...

  • 制作一个简单的99乘法表

    表相当于 列表[0]表[1]表[2]表[3]表[4]表[5]表[6]表[7]表[8]表[9]-0123456789...

  • 钟繇五表

    还示表 荐季直表 荐季直表 墓田帖 力命表 贺捷表 贺捷表 宣示表 宣示表 宣示表

  • 数据库设计

    表 病人信息表 样品信息表 测序记录表 基因位点表 变异信息表 测序变异表 套餐信息表 癌症信息表 结构变异信息 ...

  • 数据库备份恢复(本地)

    当前表空间所有表 当前表空间所有表 指定表

  • 村表户表摸底表

    8.29,周六 早晨去一中田径场健步4900。8:30下乡,路上完成学习强国52分,到倪庄开始完成村表户表,摸底表...

  • oAuth2结构设计

    表结构 auth表 app表 code表

  • RBAC权限构造

    1.构造流程(五表)三张基础表:权限表、角色表(权限组)、用户表以及两张关系表:权限表x角色表、角色表x用户表权限...

  • 2018-04-24

    商品模块-数据库-表设计 表关系:分类表 <= 商品表 <= SKU表(库存表)分类表 <= 属性名 <= 属性值...

网友评论

      本文标题:

      本文链接:https://www.haomeiwen.com/subject/xrjhuttx.html