首页 > 代码库 > iOS开发项目篇—40搭建cell的基本结构
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 @end14 15 @implementation YYStatusCell16 17 - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier18 {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)setupDetailView34 {35 YYStatusDetailView *detailView=[[YYStatusDetailView alloc]init];36 [self.contentView addSubview:detailView];37 self.detailView=detailView;38 }39 40 /**添加工具条*/41 -(void)setupToolbar42 {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 @end14 @implementation YYStatusDetailView15 16 - (id)initWithFrame:(CGRect)frame17 {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)setupOriginalView32 {33 YYStatusOriginalView *OriginalView = [[YYStatusOriginalView alloc]init];34 [self addSubview:OriginalView];35 self.OriginalView=OriginalView;36 37 }38 /**添加转发微博*/ 39 -(void)setupRetweetedView40 {41 YYStatusRetweetedView *retweetedView = [[YYStatusRetweetedView alloc]init];42 [self addSubview:retweetedView];43 self.retweetedView=retweetedView;44 }45 @end
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。