UI基础-UITableView之自定义不等高cell(纯代码)
2016-05-28 20:48
459 查看
给模型增加frame数据
所有子控件的framecell的高度
@interface HZKStatus : NSObject /**** 文字\图片数据 ****/ // ..... /**** frame数据 ****/ /** 头像的frame */ @property (nonatomic, assign) CGRect iconFrame; // ..... /** cell的高度 */ @property (nonatomic, assign) CGFloat cellHeight; @end
重写模型cellH属性的get方法
- (CGFloat)cellHeight { if (_cellHeight == 0) { // ... 计算所有子控件的frame、cell的高度 } return _cellHeight; }
在控制器中
实现一个返回cell高度的代理方法在这个方法中返回indexPath位置对应cell的高度
/** * 返回每一行cell的具体高度 */ - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { HZKStatus *status = self.statuses[indexPath.row]; return status.cellH; }
给cell传递模型数据
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *ID = @"status"; // 访问缓存池 HZKStatusCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; // 设置数据(传递模型数据) cell.status = self.statuses[indexPath.row]; return cell; }
新建一个继承自UITableViewCell
的子类,比如HZKStatusCell
@interface HZKStatusCell : UITableViewCell @end
在HZKStatusCell.m文件中
重写-initWithStyle:reuseIdentifier:方法
在这个方法中添加所有可能显示的子控件
给子控件做一些初始化设置(设置字体、文字颜色等)
/** * 在这个方法中添加所有的子控件 */ - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { // ...... } return self; }
在HZKStatusCell.h文件中提供一个模型属性,比如XMGStatus模型
@class HZKStatus; @interface HZKStatusCell : UITableViewCell /** 团购模型数据 */ @property (nonatomic, strong) HZKStatus *status; @end
在HZKStatusCell.m文件中重写模型属性的set方法
在set方法中给子控件设置模型数据- (void)setStatus:(HZKStatus *)status { _status = status; // ....... }
重写-layoutSubviews
方法
一定要调用[super layoutSubviews]
在这个方法中
设置所有子控件的frame
/** * 在这个方法中设置所有子控件的frame */ - (void)layoutSubviews { [super layoutSubviews]; // ...... }
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用开发中AFNetworking库的常用HTTP操作方法小结
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- iOS中UIAlertView警告框组件的使用教程
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解