自定义等高的cell(代码创建frame)
2016-02-05 20:04
387 查看
// // tgCell.h #import <UIKit/UIKit.h> @class tgModel; @interface tgCell : UITableViewCell /** * 团购模型数据 */ @property(nonatomic,strong)tgModel *model; /** * 创建一个cell */ + (instancetype)cellWithTableView:(UITableView *)tableView; @end
// // tgCell.m #import "tgCell.h" #import "tgModel.h" @interface tgCell() @property (weak, nonatomic) UIImageView *iconView; @property (weak, nonatomic) UILabel *titleLabel; @property (weak, nonatomic) UILabel *priceLabel; @property (weak, nonatomic) UILabel *buyCountLabel; @end @implementation tgCell // 1.在initWithStyle:reuseIdentifier:方法中添加子控件 - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { UIImageView *iconView = [[UIImageView alloc] init]; [self.contentView addSubview:iconView]; self.iconView = iconView; UILabel *titleLabel = [[UILabel alloc] init]; [self.contentView addSubview:titleLabel]; self.titleLabel = titleLabel; UILabel *priceLabel = [[UILabel alloc] init]; priceLabel.textColor = [UIColor orangeColor]; [self.contentView addSubview:priceLabel]; self.priceLabel = priceLabel; UILabel *buyCountLabel = [[UILabel alloc] init]; buyCountLabel.textAlignment = NSTextAlignmentRight; buyCountLabel.font = [UIFont systemFontOfSize:14]; buyCountLabel.textColor = [UIColor lightGrayColor]; [self.contentView addSubview:buyCountLabel]; self.buyCountLabel = buyCountLabel; } return self; } // 2.在layoutSubviews方法中设置子控件的frame - (void)layoutSubviews { [super layoutSubviews]; CGFloat contentH = self.contentView.frame.size.height; CGFloat contentW = self.contentView.frame.size.width; CGFloat margin = 10; CGFloat iconX = margin; CGFloat iconY = margin; CGFloat iconW = 100; CGFloat iconH = contentH - 2 * iconY; self.iconView.frame = CGRectMake(iconX, iconY, iconW, iconH); // titleLabel CGFloat titleX = CGRectGetMaxX(self.iconView.frame) + margin; CGFloat titleY = iconY; CGFloat titleW = contentW - titleX - margin; CGFloat titleH = 21; self.titleLabel.frame = CGRectMake(titleX, titleY, titleW, titleH); // CGRectMake(titleX, titleY, titleW, titleH); // priceLabel CGFloat priceX = titleX; CGFloat priceH = 21; CGFloat priceY = contentH - margin - priceH; CGFloat priceW = 70; self.priceLabel.frame = CGRectMake(priceX, priceY, priceW, priceH); // buyCountLabel CGFloat buyCountH = priceH; CGFloat buyCountY = priceY; CGFloat buyCountX = CGRectGetMaxX(self.priceLabel.frame) + margin; CGFloat buyCountW = contentW - buyCountX - margin; self.buyCountLabel.frame = CGRectMake(buyCountX, buyCountY, buyCountW, buyCountH); } // 3.重写模型的set方法 - (void)setModel:(tgModel *)model { _model = model; //设置数据 self.iconView.image = [UIImage imageNamed:model.icon]; self.titleLabel.text = model.title; self.priceLabel.text = [NSString stringWithFormat:@"¥%@",model.price]; self.buyCountLabel.text = [NSString stringWithFormat:@"%@人已购买",model.buyCount]; } + (instancetype)cellWithTableView:(UITableView *)tableView { static NSString *ID = @"cell"; tgCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; if (cell == nil) { cell = [[tgCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID]; } return cell; } @end
相关文章推荐
- Python lambda和reduce函数
- 重定向操作(C语言)
- 使用Spring MVC统一异常处理实战
- Codeblosks用C++编写通用DLL供其他语言调用
- Mybatis 中常用的java类型与jdbc类型
- C语言之memcpy函数
- Mybatis与Spring整合
- [Spring实战系列](11)SpEL使用表达式装配
- 第十章编程练习(7)
- Boost.Asio基础(五) 异步编程初探
- java 异常详解
- Spring的事务管理
- Java [Leetcode 190]Reverse Bits
- C语言:链表实现的一个实例
- C语言:链表实现的一个实例
- c#之new关键字
- 我的蓝桥杯历届初赛试题总结
- 《STL源代码剖析》---stl_alloc.h阅读笔记
- 错误记录--“==”与“=”错误
- Java 自定义注解详解