一. 自定义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).