iOS UITableView Cell动态高度(使用AutoLayout)
2015-07-14 16:59
537 查看
随着autoLayout使用的增多,开发者越发的希望cell可以根据内容自动计算高度.
为了能够尽量方便的使用,以及代码规范的要求,本人封装了一个Manager类,这个manager持有一个cell,且根据cell的数据,估算cell的高度并返回,使用时,只需要实现几个代理方法,就可以了.
github:https://github.com/YanChen-ing/CellDynamicHeightManager.git
下面上代码:
YCICellDynamicHeightManager.h
使用:
1.在自己的cell类遵守<YCICellDynamicHeightManagerDelegate>并实现其方法.
2.viewController中创建manager,并通过自定义的初始化器创建.
3.在tableView:heightForRowAtIndexPath中,调用cellHeightWithModel:方法.
为了能够尽量方便的使用,以及代码规范的要求,本人封装了一个Manager类,这个manager持有一个cell,且根据cell的数据,估算cell的高度并返回,使用时,只需要实现几个代理方法,就可以了.
github:https://github.com/YanChen-ing/CellDynamicHeightManager.git
下面上代码:
YCICellDynamicHeightManager.h
@protocol YCICellDynamicHeightManagerDelegate <NSObject> @required //配置宽度 - (void)setUpPreferredWidth; //根据model刷新UI - (void)bindDataWithModel:(NSObject *)model; //保存/获取高度信息,建议保存在model中 - (void)saveCellHeight:(CGFloat)height; - (CGFloat)getCellHeight; @end /** 仅支持autolayout布局的cell,必须遵守<YCICellDynamicHeightManagerDelegate> */ @interface YCICellDynamicHeightManager : NSObject /** * 注: cell必须遵守协议<YCICellDynamicHeightManagerDelegate> */ - (instancetype)initWithCellClass:(Class)aClass; - (instancetype)initWithCell:(UITableViewCell<YCICellDynamicHeightManagerDelegate> *)aCell; /** * 计算高度,已包含对 获取/存储 高度信息的处理 */ - (CGFloat)cellHeightWithModel:(NSObject *)model; @end
使用:
1.在自己的cell类遵守<YCICellDynamicHeightManagerDelegate>并实现其方法.
2.viewController中创建manager,并通过自定义的初始化器创建.
//创建一个Manager _dynamicManager = [[YCICellDynamicHeightManager alloc]initWithCellClass:[YCIDynamicCell class]];
3.在tableView:heightForRowAtIndexPath中,调用cellHeightWithModel:方法.
<span style="font-size:18px;">- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ //用manager 测量高度 YCIDynamicModel *model = _models[indexPath.row]; return [_dynamicManager cellHeightWithModel:model]; }</span>
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- iOS开发之路--微博OAuth授权_取得用户授权的accessToken
- ios通过按钮点击异步加载图片
- ios中图像进行压缩方法汇总
- IOS检测指定路径的文件是否存在
- iOS、Mac OS X系统中编程实现汉字转拼音的方法(超级简单)