您的位置:首页 > 产品设计 > UI/UE

iOS开发UI篇 -- UITableView

2015-07-13 09:39 246 查看
本文意在介绍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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: