一 自定义 cell
1.在实际编程的过程中,往往会根据不同的需求,设计出不同的界面样式,所以我们需要在系统提供的控件的基础上,自定义控件用来布局界面.
2.自定义cell 就是创建一个UITableViewCell的子类.
3.把 cell 上的控件创建都封装在子类中,简化UIViewController 中的代码
4.子视图控件添加到 cell的 contentView 上.
二 cell 中的控件显示 Model 中的信息
1. cell 中声明了一个 Model 类型的属性,viewController 中获取到 Mode 对象后赋值给 cell的 Model 属性
2. cell 中重写 Model 的 setter 方法,把 Model 对象中的内容重新赋值给各个控件
3. M和 V不直接进行通信, C负责 M和 V之间进行通信
三 cell 中的自定义控件
1. 计算文本高度是所用的字体要和 label 显示时用的字体一致
2. label 的宽度要和计算时使用的限定宽度一致
3. 这样才能保证文本显示在 label 中时, label 中时, label 高度恰巧够.
4. tableView: heightForRowAtIndexPath: 方法要比 tableView:cellForRowAtIndexPath先执行
5. 所以要提前计算号每个文本cell 需要的高度
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath *)indexPath{
需要一个 News对象, cellHeight是一个自定义的类方法,所有只能通过类进行调用
return [NewCellcellHeight:self:mArray[indexPath.row]];
}
6. 自定义计算文本高度的方法:
1>主要方法:
[summary boundingRectWithSize:size options:
NSStringDrawingUsesLineFragmentOriginattributes:attributes context:nil]
2>设置了 cell 的高度之后,还不能实现文本内容的自适应,需要将显示文本的 Lable 控件也设置为自适应高度,所以需要在对 Lable 赋值完成之后进行设置
(因为不能在 frame 中对高度进行修改)所以需要先取出 frame 的值,进行修改,完成之后,再重新对 frame 进行赋值(修改的时候,