iOS开发项目篇—40搭建cell的基本结构

iOS开发项目篇—40搭建cell的基本结构

一、简单说明

1.策略:针对微博可能出现的多种情况(只有文字,有文字有配图,有转发微博等),一次性加载所用的子控件到cell中,对于没有数据的空间进行隐藏。(不管cell以后会显示什么子控件,把所有有可能显示的子控件都添加上去·添加到contentView上)

微博cell的显示示例:

2.自定义cell的步骤:

1.新建一个继承自UITablecell的子类
2.在initWithStyle:方法中进行子控件的初始化
(1)将有可能显示的所有子控件都添加到contentView中
(2)顺便设置子控件的一些属性(一次性的设置:字体,文字颜色,背景等)
 
3.提供两个模型
(1)一个是数据模型(文字数据+图片数据)
(2)一个是frame模型(数据模型+所有子控件的frame+cell的高度)
 
4.cell应该提供一个frame模型属性
(1)将frame模型传递给cell
(2)cell根据frame模型给子控件设置frame,根据数据模型给子控件设置数据
(3)cell根据数据模型决定显示和隐藏哪些子控件
 
5.在tableView的代理方法中返回cell的高度

 

二、cell的结构分析

提示:如果在调整的事后需要“统一行动”的子控件,可以考虑先把他们作为一个群组添加到一个view中进行管理。不要吝啬UI控件,控件是不占内存的,图片占内存。

只有工具条和微博具体内容这两个View是直接面向contentView的

 

三、新建类,对类进行顶层设计

自定义cell类,其继承自UITableViewcell

整体结构:

类中的代码设计:

 YYStatusCell.m文件

 1 //
 2 //  YYStatusCell.m
 3 //  34-微博搭建cell的基本结构
 4 //  自定义cell
 5 
 6 #import "YYStatusCell.h"
 7 #import "YYStatusDetailView.h"
 8 #import "YYStatusToolbar.h"
 9 
10 @interface YYStatusCell ()
11 @property(nonatomic,weak)YYStatusDetailView *detailView;
12 @property(nonatomic,weak)YYStatusToolbar *toolbar;
13 @end
14 
15 @implementation YYStatusCell
16 
17 - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
18 {
19     self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
20     if (self) {
21         //初始化子控件
22         
23         //1.添加微博具体内容
24         [self setupDetailView];
25         
26         //2.添加工具条
27         [self setupToolbar];
28     }
29     return self;
30 }
31 
32 /**添加微博具体内容*/
33 -(void)setupDetailView
34 {
35     YYStatusDetailView *detailView=[[YYStatusDetailView alloc]init];
36     [self.contentView addSubview:detailView];
37     self.detailView=detailView;
38 }
39 
40 /**添加工具条*/
41 -(void)setupToolbar
42 {
43     YYStatusToolbar *toolbar=[[YYStatusToolbar alloc]init];
44     [self.contentView addSubview:toolbar];
45     self.toolbar=toolbar;
46 }
47 
48 @end

YYStatusDetailView.m文件

 1 //
 2 //  YYStatusDetailView.m
 3 //  34-微博搭建cell的基本结构
 4 //
 5 
 6 #import "YYStatusDetailView.h"
 7 #import "YYStatusOriginalView.h"
 8 #import "YYStatusRetweetedView.h"
 9 
10 @interface YYStatusDetailView ()
11 @property(nonatomic,weak)YYStatusOriginalView *OriginalView;
12 @property(nonatomic,weak)YYStatusRetweetedView *retweetedView;
13 @end
14 @implementation YYStatusDetailView
15 
16 - (id)initWithFrame:(CGRect)frame
17 {
18     self = [super initWithFrame:frame];
19     if (self) {
20         //初始化子控件
21         
22         //1.添加原创微博
23         [self setupOriginalView];
24         
25         //2.添加转发微博
26         [self setupRetweetedView];
27     }
28     return self;
29 }
30 /**添加原创微博*/
31 -(void)setupOriginalView
32 {
33     YYStatusOriginalView *OriginalView = [[YYStatusOriginalView alloc]init];
34     [self addSubview:OriginalView];
35     self.OriginalView=OriginalView;
36     
37 }
38 /**添加转发微博*/ 
39 -(void)setupRetweetedView
40 {
41     YYStatusRetweetedView *retweetedView = [[YYStatusRetweetedView alloc]init];
42     [self addSubview:retweetedView];
43     self.retweetedView=retweetedView;
44 }
45 @end

iOS开发项目篇—40搭建cell的基本结构,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。