IOS 自定义 tableView cell(UITableViewCell height) 高度
2015-08-01 11:17
573 查看
IOS开发中,最常用的就是UITableView 了,这里,我做一个简单的帖子列表Demo,教大家用一种比较模块化的方法来自定义我们的cell 高度,废话不多说,我们开始新建一个工程。PS:采用纯代码的开发方式。
运行截图:
步骤:新建一个singleViewApplication
步骤:通过新建group把工程目录结构改成如下图所示
通过上面的图片能够看得出来,工程包含了View层、Model层和ViewController层,是一个典型的MVC开发架构。
model层有一个帖子模型,包含三个属性。.m文件不需要做任何实现。
步骤:
核心代码是在cell里面,先贴上一段.h文件的代码:
看得出来,我这里是定义了另外一个类(HQTableViewCellData)来帮助设置cell的数据,在HQTableViewCellData里面通过一个方法来设置cellData的内容。并且定义了三个frame属性来存储计算出来的字符串和图片的frame.最后我们可以通过计算得到cellHeight并保存在cellData中。完整的实现过程在HQTableViewCellData.m文件里:
核心代码就是上面那段了,完整demo请戳这里。
运行截图:
步骤:新建一个singleViewApplication
步骤:通过新建group把工程目录结构改成如下图所示
通过上面的图片能够看得出来,工程包含了View层、Model层和ViewController层,是一个典型的MVC开发架构。
model层有一个帖子模型,包含三个属性。.m文件不需要做任何实现。
步骤:
核心代码是在cell里面,先贴上一段.h文件的代码:
#import <UIKit/UIKit.h> #import "HQTieziModel.h" #define hqTableViewCellIdentify @"HQ_TABLE_VIEW_CELL" @interface HQTableViewCellData : NSObject @property (nonatomic, assign) BOOL showBottomLine; @property (nonatomic, assign) BOOL showTopLine; @property (nonatomic, assign) float cellHeight; @property (nonatomic, strong) HQTieziModel *tieziModel; @property (nonatomic, assign) CGRect titleFrame; @property (nonatomic, assign) CGRect descFrame; @property (nonatomic, assign) CGRect photoFrame; -(void)setUpCellData:(HQTieziModel *)tieziModel; @end @interface HQTableViewCell : UITableViewCell @property (nonatomic, strong) HQTableViewCellData *cellData; @end
看得出来,我这里是定义了另外一个类(HQTableViewCellData)来帮助设置cell的数据,在HQTableViewCellData里面通过一个方法来设置cellData的内容。并且定义了三个frame属性来存储计算出来的字符串和图片的frame.最后我们可以通过计算得到cellHeight并保存在cellData中。完整的实现过程在HQTableViewCellData.m文件里:
-(void)setUpCellData:(HQTieziModel *)tieziModel{ CGFloat originX = 15; CGFloat originY = 15; CGSize titleSize = [self boundingString:tieziModel.tieziTitle rectWithSize:CGSizeMake(ScreenWidth - 30, FLT_MAX) withStringFont:titleFont]; self.titleFrame = CGRectMake(originX, originY, titleSize.width, titleSize.height); originY += titleSize.height; CGSize descSize = [self boundingString:tieziModel.tieziDesc rectWithSize:CGSizeMake(ScreenWidth - 30, FLT_MAX) withStringFont:descFont]; self.descFrame = CGRectMake(originX, originY + 15, descSize.width, descSize.height); originY += descSize.height + 15; CGFloat pictureHeight = 80; self.photoFrame = CGRectMake(originX, originY + 15 , pictureHeight, pictureHeight); originY += pictureHeight + 15 + 10; self.cellHeight = originY; self.tieziModel = tieziModel; }
//计算字符串高度方法 - (CGSize)boundingString:(NSString *)text rectWithSize:(CGSize)size withStringFont:(UIFont *)font{ NSDictionary *attribute = @{NSFontAttributeName: font}; CGSize retSize = [text boundingRectWithSize:size options:\ NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attribute context:nil].size; return retSize; }
核心代码就是上面那段了,完整demo请戳这里。
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- C#实现自定义双击事件
- MFC自定义消息的实现方法
- C#实现ProperTyGrid自定义属性的方法
- php自定义错误处理用法实例
- ThinkPHP中自定义目录结构的设置方法
- C#自定义事件及用法实例
- C#中使用IFormattable实现自定义格式化字符串输出示例
- javascript 自定义常用方法第1/2页
- 自定义jQuery插件方式实现强制对象重绘的方法
- jQuery实现自定义checkbox和radio样式
- jquery自定义插件开发之window的实现过程
- jQuery实现自定义事件的方法
- jQuery创建自定义的选择器用以选择高度大于100的超链接实例