iOS 之UITableViewCell的自定义

2016-03-21  本文已影响138人  CarsonChen

一. 自定义cell

创建一个类继承UITableViewCell确保所有想要添加的子视图都在自定义cell的初始化方法中创建,由于cell使用的是重用机制,一个cell在下一次调用的时候不会走初始化方法,这样可以调高内存的使用效率避免子视图重复创建.cell的子视图声明成为该自定义cell的属性.

在layoutSubViews方法中设置cell中子视图的frame是根据cell的自身的大小来确定子视图的大小.子视图是添加在cell上的contentView上的.

二. Modal类型对象的使用

MVC的使用,Modal Value Controller的配合使用.Modal类主要是为我们提供数据,继承于NSObject的类都称之为modal.OC中的KVC就是帮我们把字典转换为modal类存在的.

创建的步骤:

1. 创建一个类继承自NSObject

2. 添加和字典对应的属性(属性名与字典的键值必须相同)

3. 在视图控制器中将字典同过KVC为modal赋值.

4. 将modal对象添加到数组中并刷新tableView

将数组中的Dictionary的对象转换成为modal对象.kvc方法setValuesForKeysWithDictionary给Modal类型的属性赋值,然后将其对象添加到数组中方便使用.自定义cell中指定modal类型为其的一个属性.在给cell上的子视图赋值的时,使用modal为其属性赋值.(注意:自定义cell中给其子视图属性赋值,是写在其modal的setter方法中的).在modal类型的类的.m文件中- (void)setValue:(id)value forUndefinedKey:(NSString *)key 写该方法,则取出字典中多出来(或不使用的键值对).

三. 多种cell的混合使用

多种cell的混合使用,注意注册的使用队列不同,通过cell在当前是哪个位置,来进行判断使用哪种类型的cell.

四. cell自适应高度

文本自适应高度:根据文本的内容设定Label的高度.

contentView的height比cell低0.5

[string boundingRectWithSize:CGSizeMake(tableView.bounds.size.width - 10, 0) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:17]} context:nil] 通过此方法可以将文本自适应cell高度并且全部显示.

图片自适应高度:根据图片的宽度进行等比例缩放.

例如将图片处理成为宽度200并且不失帧,即高度为 orginHeight / (orginWidth / 200).

上一篇下一篇

猜你喜欢

热点阅读