TableView与TableViewCell
来源:互联网 发布:淘宝砖石展位教程 编辑:程序博客网 时间:2024/05/27 01:06
TableViewCell
TableViewCell是现实表格的单元格式
基本流程为在init中添加各种可用控件,再编写输入数据的方法,并且依据各数据来设定各控件的位置以及行高
#import "TableViewCell.h"#import "Weibo.h"#define NJNameFont [UIFont systemFontOfSize:15]#define NJTextFont [UIFont systemFontOfSize:16]@implementation TableViewCell+ (instancetype) cellWithTableView:(UITableView *) tableView;{ static NSString *identifier = @"status"; //缓存中取 TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier]; //创建 if(cell == nil) { cell = [[TableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]; } return cell;}- (id) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if(self) { //自定义各种控件 //定义头像控件 UIImageView *iconView = [[UIImageView alloc] init]; [self.contentView addSubview:iconView]; self.iconView = iconView; //自定义昵称 UILabel *nameLabel = [[UILabel alloc] init]; [self.contentView addSubview:nameLabel]; self.nameLabel = nameLabel; //创建vip UIImageView *vipView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"VIP_32px_534386_easyicon.net.png"]]; [self.contentView addSubview: vipView]; self.vipView = vipView; //创建正文 UILabel *introLabel = [[UILabel alloc] init]; introLabel.numberOfLines = 0; [self.contentView addSubview:introLabel]; self.introLabel = introLabel; //创建配图 UIImageView *pictureView = [[UIImageView alloc] init]; [self.contentView addSubview:pictureView]; self.pictureView = pictureView; } return self;}- (void) settingData:(Weibo*) lyzWeibo{ //设置头像图片 CGFloat padding = 10; self.iconView.image = [UIImage imageNamed:lyzWeibo.icon]; CGRect iconF = CGRectMake(10, 10, 30, 30); self.iconView.frame = iconF; //设置微博名 self.nameLabel.text = lyzWeibo.name; self.nameLabel.font = NJNameFont; CGFloat nameLabelX = CGRectGetMaxX(iconF) + padding; CGSize nameSize = [self sizeWithString:lyzWeibo.name font:NJNameFont maxSize:CGSizeMake(MAXFLOAT, MAXFLOAT)]; CGFloat nameLabelY = 10 + (30 - nameSize.height) * 0.5; CGRect nameF = CGRectMake(nameLabelX, nameLabelY, nameSize.width, nameSize.height); self.nameLabel.frame = nameF; //设置vip if(lyzWeibo.vip) { self.vipView.hidden = NO; self.nameLabel.textColor = [UIColor redColor]; CGFloat vipVIewX = CGRectGetMaxX(nameF) + padding; CGFloat vipViewY = nameLabelY; self.vipView.frame = CGRectMake(vipVIewX, vipViewY, 14, 14); }else { self.vipView.hidden = YES; } self.cellHeight = CGRectGetMaxY(iconF) + padding; //设置正文,if的条件为参数存在且不为空 if(lyzWeibo.text && (![lyzWeibo.text isEqual: @""])) { self.introLabel.text = lyzWeibo.text; self.introLabel.font = NJTextFont; CGFloat introLabelX = 10; CGFloat introLabelY = CGRectGetMaxY(iconF) + padding; CGSize introSize = [self sizeWithString:lyzWeibo.text font:NJTextFont maxSize:CGSizeMake(MAXFLOAT,MAXFLOAT)]; CGRect introF = CGRectMake(introLabelX, introLabelY, introSize.width, introSize.height); self.introLabel.frame = introF; self.cellHeight = CGRectGetMaxY(self.introLabel.frame) + padding; }else { self.introLabel.hidden = YES; } //设置配图 if(lyzWeibo.picture && (![lyzWeibo.picture isEqual: @""])) { self.pictureView.image = [UIImage imageNamed:lyzWeibo.picture]; if(lyzWeibo.text && (![lyzWeibo.text isEqual: @""])) { CGFloat pictureX = 10; CGFloat pictureY = CGRectGetMaxY(self.introLabel.frame) + padding; self.pictureView.frame = CGRectMake(pictureX, pictureY, 100, 100); }else { CGFloat pictureX = 10; CGFloat pictureY = CGRectGetMaxY(iconF) + padding; self.pictureView.frame = CGRectMake(pictureX, pictureY, 100, 100); } self.cellHeight = CGRectGetMaxY(self.pictureView.frame) + padding; }else { self.pictureView.hidden = YES; }}- (CGSize) sizeWithString:(NSString *)str font:(UIFont *)font maxSize:(CGSize)maxSize{ NSDictionary *dict = @{NSFontAttributeName:font}; CGSize size = [str boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil].size; return size;}@end
TableView
在 - (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 方法中利用TableViewCell的settingData方法来设定TableViewCell并返回,另外需要注意的就是设置行高以及行数,至于数据结构,可另写class,亦可在本Controller中添加@property来获取文件内容进行设置
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSInteger rowNo = indexPath.row; TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"reuseIdentifier"]; cell = [[TableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"reuseIdentifier"]; [cell settingData:[self.statusFrames objectAtIndex:rowNo]]; // Configure the cell... return cell;}- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ NSInteger rowNo = indexPath.row; TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"reuseIdentifier"]; cell = [[TableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"reuseIdentifier"]; [cell settingData:[self.statusFrames objectAtIndex:rowNo]]; return cell.cellHeight;}//statusFrames为数据属性,通过文件获取数据- (NSArray *) statusFrames{ if(_statusFrames == nil) { NSString * fullPath = [[NSBundle mainBundle] pathForResource:@"statuses.plist" ofType:nil]; NSArray *dictArray = [NSArray arrayWithContentsOfFile:fullPath]; NSMutableArray *models = [NSMutableArray arrayWithCapacity:dictArray.count]; for(NSDictionary *dict in dictArray) { Weibo *weibo01 = [Weibo weiboWithDict:dict]; [models addObject:weibo01]; } self.statusFrames = [models copy]; } return _statusFrames;}
0 0
- TableView与TableViewCell
- 普通viewController绘制tableview tableviewcell
- 从tableview中移动出tableviewcell效果
- iOS TableView和TableViewCell的风格
- TableView界面传值和TableViewCell使用
- iOS 代码实现自定义TableView 自定义TableViewCell
- 使用自定义的tableViewCell- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS
- tableViewCell与xib
- [iOS]自定义 TableViewCell 实现圆角/渐变色 TableView
- TableView 的reload 时TableViewCell 的drawRect 问题
- IOS开发之TableView以及TableViewCell背景设置
- IOS——TableView以及TableViewCell方法总结
- iOS疯狂详解之TableView以及TableViewCell背景设置
- [IOS]关于设计TableView和TableViewCell之基础篇
- [IOS]关于设计TableView和TableViewCell之实际操作篇
- TableView 的reload 时页面出错 TableViewCell 的drawRect 问题
- iOS学习- 11 TableView 显示TableViewCell 显示 - Todo App
- tableviewcell
- 电商之梳理note js相关知识---前端技术
- Didcuz memcache+ssrf GETSHELL漏洞解决方法
- hdoj1009 贪心
- 我要写代码——跨过程序员的门槛(6)_意外实习
- Hadoop基本操作命令
- TableView与TableViewCell
- 电商之梳理IE浏览器相关知识---浏览器
- 电商之梳理谷歌google浏览器相关知识---浏览器
- 电商之梳理hive相关知识---数据仓库工具
- mysql启动报错Can't read from messagefile处理
- 电商之梳理eclipse相关知识---开发工具
- 运行时类型识别(RTTI)
- Duplicate sources error
- 电商之梳理MyEclipse相关知识---开发工具