自定义不等高的cell-(纯代码)frame
2016-01-17 10:20
405 查看
给模型增加frame数据
所有子控件的framecell的高度
@interface XMGStatus : NSObject /**** 文字\图片数据 ****/ // ..... /**** frame数据 ****/ /** 头像的frame */ @property (nonatomic, assign) CGRect iconFrame; // ..... /** cell的高度 */ @property (nonatomic, assign) CGFloat cellHeight; @end
[/code]
重写模型cellHeight属性的get方法
- (CGFloat)cellHeight { if (_cellHeight == 0) { // ... 计算所有子控件的frame、cell的高度 } return _cellHeight; }
[/code]
在控制器中
实现一个返回cell高度的代理方法在这个方法中返回indexPath位置对应cell的高度
/** * 返回每一行cell的具体高度 */ - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { XMGStatus *status = self.statuses[indexPath.row]; return status.cellHeight; }
[/code]
给cell传递模型数据
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *ID = @"tg"; // 访问缓存池 XMGStatusCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; // 设置数据(传递模型数据) cell.status = self.statuses[indexPath.row]; return cell; }
[/code]
新建一个继承自UITableViewCell
的子类,比如XMGStatusCell
@interface XMGStatusCell : UITableViewCell @end
[/code]
在XMGStatusCell.m文件中
重写-initWithStyle:reuseIdentifier:方法
在这个方法中添加所有需要显示的子控件
给子控件做一些初始化设置(设置字体、文字颜色等)
/** * 在这个方法中添加所有的子控件 */ - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { // ...... } return self; }
[/code]
在XMGStatusCell.h文件中提供一个模型属性,比如XMGTg模型
@class XMGStatus; @interface XMGStatusCell : UITableViewCell /** 团购模型数据 */ @property (nonatomic, strong) XMGStatus *status; @end
[/code]
在XMGTgCell.m中重写模型属性的set方法
在set方法中给子控件设置模型数据- (void)setStatus:(XMGStatus *)status { _status = status; // ....... }
[/code]
重写-layoutSubviews
方法
一定要调用[super layoutSubviews]
在这个方法中设置所有子控件的frame
/** * 在这个方法中设置所有子控件的frame */ - (void)layoutSubviews { [super layoutSubviews]; // ...... }
[/code]
End
相关文章推荐
- 半小时学会上传本地项目到github
- C函数的调用过程 栈帧
- php 引用和global
- VB.net操控網頁整理加實戰篇
- spring mvc 接受多对象的处置
- java web 学习十五(jsp基础语法)
- PDFium-PDF开源之旅(1)-初探代码下载编译
- 【java开发】用工厂模式实现service层和dao层解耦
- 数据库--PHP环境搭建
- java封装、继承和多态
- PHP错误Warning: Cannot modify header information - headers already sent by解决方法
- 欢迎使用CSDN-markdown编辑器
- Python中*args 和**kwargs
- Qt中截图功能的实现
- Spring MVC 数据验证——validate注解方式
- 代码审计1
- 软件包 java.util.concurrent.locks
- java160114ThreadTest
- [转载]Spring配置文件详解一:
- java160114StringDemo