iOS开发UI篇 -- UITableView

本文意在介绍UITableView的使用技巧,持续更新。。。


一、先来个小总结:

目前能力 -- UITableViewController如何写。。。
1、添加一个存放数据的datas的集合(重写get方法,使用懒加载)
2、实现普通的方式(将数据转成模型),实现各种代理方法,展现出数据来

3、创建cell

a.使用原来cell;

    提供创建cell的类方法,
    同时提供一个item模型属性,
    重写setItem方法,在set方法中设置数据

b.自定义cell,控件固定使用xib(比如团购cell)使用xib创建cell

    如果使用xib,需要注意xib父类和ID,需要连线提供控件属性

c.自定义cell,控件不固定(比如微博)

第一步  新建cell,重写initWithStyle:reuseIdentifier:

第二步  创建Status 和 StatusFrame 模型

     Status中的属性和cell中的控件相对应

     StatusFrame中装各个控件的 frame 和 cellHeight

第三步  重写setStatus 和 setStatusFrame  方法

     重写setStatus,计算各控件  frame  和  cellHeight

     重写setStatusFrame方法,settingData 和 settingFrame

第四步  获取Status数据,写数据源和代理方法

ps:cell初始化的时候,初始化所有子控件

        对于不一定显示的控件,我们在settingData的时候根据Status中有无此数据来设置该控件是否显示

        将其余步骤都完成之后,在计算frame这一步我们可以一个个来计算,减少出错率!

        获取到Status数据时,我们可以先NSLog看一看,在转模型,装到Frame中

        整个WBTableViewController相当于:我们将33个双色球放到了大箱子中,用到第一个就取出第一个,用到第二个就取第二个。提高了性能,手机界面不会出现卡顿现象



好吧,初学者能力至此。。望各位大神补充。。。


二、CC上的一个问答:

怎样把TableView做得像微信朋友圈、QQ动态那样流畅?

本人在做企业应用,里面有同事圈(类似微信朋友圈),每一个Cell包含不同长度的文字和不同数量的图片,我的做法是在创建Cell的时候把所有子View移除,再创建新的,然后添加文字并异步加载图片,在获取Cell高度的代理函数里面先根据indexPath获取Cell,然后再计算返回Cell.frame.size.height。基本功能也算实现了,就是滑动起来卡,在iPhone4S上还略有抖动。有没有大神会把TableView优化到不卡,求思路?


看看各位神友的答案!
如果你想要如丝般顺滑的效果,那么:
1、每次都看一下有没有能重用的 cell,而不是永远重新新建(这个是 UITableView 的常识)
2、图片载入放到后台进程去进行,滚出可视范围的载入进程要 cancel 掉
3、圆角、阴影之类的全部 bitmap 化,或者放到后台 draw 好了再拿来用
4、Cell 里要用的数据提前缓存好,不要现用现去读文件
5、数据量太大来不及一次读完的做一个 load more cell 出来,尽量避免边滚边读数据,这样就算是双核的 CPU 也难保不会抽
6、heightForRowAtIndexPath这个方法会计算出你所有cell的高度,所以最好不要做太复杂的算法。

Demo在这: --   》》》  https://github.com/johnil/VVeboTableViewDemo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值