自定义等高的cell

自定义等高的cell

标签(空格分隔): UI

—所有cell的高度都是一样的

纯代码方式

1.frame

  • 新建一个继承自UITableViewCell的子类,比如XMGTgCell
@interface XMGTgCell : UITableViewCell
@end
  • 在XMGTgCell.m文件中
    • 重写-initWithStyle:reuseIdentifier:方法
    • 在这个方法中添加所有需要显示的子控件
    • 给子控件做一些初始化设置(设置字体、文字颜色等)
/**
 *  在这个方法中添加所有的子控件
 */
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
        // ......
    }
    return self;
}
  • 重写-layoutSubviews方法
    • 一定要调用[super layoutSubviews]
    • 在这个方法中计算和设置所有子控件的frame
/**
 *  在这个方法中计算所有子控件的frame
 */
- (void)layoutSubviews
{
    [super layoutSubviews];
    // ......
}
  • 在XMGTgCell.h文件中提供一个模型属性,比如XMGTg模型
@class XMGTg;

@interface XMGTgCell : UITableViewCell
/** 团购模型数据 */
@property (nonatomic, strong) XMGTg *tg;
@end
  • 在XMGTgCell.m中重写模型属性的set方法
    • 在set方法中给子控件设置模型数据
- (void)setTg:(XMGTg *)tg
{
    _tg = tg;
    // .......
}
  • 在控制器中
    • 注册cell的类型
[self.tableView registerClass:[XMGTgCell class] forCellReuseIdentifier:ID];
  • 给cell传递模型数据
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // 访问缓存池
    XMGTgCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];

    // 设置数据(传递模型数据)
    cell.tg = self.tgs[indexPath.row];

    return cell;
}

2.Autolayout

新建一个继承自UITableViewCell的子类,比如XMGTgCell
@interface XMGTgCell : UITableViewCell
@end
在XMGTgCell.m文件中
  • 重写-initWithStyle:reuseIdentifier:方法
    • 在这个方法中添加所有需要显示的子控件
    • 给子控件做一些初始化设置(设置字体、文字颜色等)
    • 添加子控件的完整约束
/**
 *  在这个方法中添加所有的子控件
 */
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
        // ......
    }
    return self;
}
在XMGTgCell.h文件中提供一个模型属性,比如XMGTg模型
@class XMGTg;

@interface XMGTgCell : UITableViewCell
/** 团购模型数据 */
@property (nonatomic, strong) XMGTg *tg;
@end
在XMGTgCell.m中重写模型属性的set方法
  • 在set方法中给子控件设置模型数据
- (void)setTg:(XMGTg *)tg
{
    _tg = tg;

    // .......
}
在控制器中
  • 注册cell的类型
[self.tableView registerClass:[XMGTgCell class] forCellReuseIdentifier:ID];
  • 给cell传递模型数据
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // 访问缓存池
    XMGTgCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];

    // 设置数据(传递模型数据)
    cell.tg = self.tgs[indexPath.row];

    return cell;
}

xib方式

新建一个继承自UITableViewCell的子类,比如XMGTgCell
@interface XMGTgCell : UITableViewCell
@end
新建一个xib文件(文件名最好跟类名一致,比如XMGTgCell.xib)
  • 修改cell的class为XMGTgCell

  • 绑定循环利用标识

  • 添加子控件,设置子控件约束

  • 将子控件连线到类扩展中
@interface XMGTgCell()
@property (weak, nonatomic) IBOutlet UIImageView *iconImageView;
@property (weak, nonatomic) IBOutlet UILabel *titleLabel;
@property (weak, nonatomic) IBOutlet UILabel *priceLabel;
@property (weak, nonatomic) IBOutlet UILabel *buyCountLabel;
@end
在XMGTgCell.h文件中提供一个模型属性,比如XMGTg模型
@class XMGTg;

@interface XMGTgCell : UITableViewCell
/** 团购模型数据 */
@property (nonatomic, strong) XMGTg *tg;
@end
在XMGTgCell.m中重写模型属性的set方法
  • 在set方法中给子控件设置模型数据
- (void)setTg:(XMGTg *)tg
{
    _tg = tg;
    // .......
}
在控制器中
  • 注册xib文件
[self.tableView registerNib:[UINib nibWithNibName:NSStringFromClass([XMGTgCell class]) bundle:nil] forCellReuseIdentifier:ID];
  • 给cell传递模型数据
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // 访问缓存池
    XMGTgCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];

    // 设置数据(传递模型数据)
    cell.tg = self.tgs[indexPath.row];

    return cell;
}

storyboard方式

新建一个继承自UITableViewCell的子类,比如XMGTgCell
@interface XMGTgCell : UITableViewCell
@end
在storyboard文件中,找到UITableView里面的cell(动态cell)
  • 修改cell的class为XMGTgCell

  • 绑定循环利用标识

  • 添加子控件,设置子控件约束

  • 将子控件连线到类扩展中
@interface XMGTgCell()
@property (weak, nonatomic) IBOutlet UIImageView *iconImageView;
@property (weak, nonatomic) IBOutlet UILabel *titleLabel;
@property (weak, nonatomic) IBOutlet UILabel *priceLabel;
@property (weak, nonatomic) IBOutlet UILabel *buyCountLabel;
@end
在XMGTgCell.h文件中提供一个模型属性,比如XMGTg模型
@class XMGTg;

@interface XMGTgCell : UITableViewCell
/** 团购模型数据 */
@property (nonatomic, strong) XMGTg *tg;
@end
在XMGTgCell.m中重写模型属性的set方法
  • 在set方法中给子控件设置模型数据
- (void)setTg:(XMGTg *)tg
{
    _tg = tg;
    // .......
}
在控制器中
  • 给cell传递模型数据
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *ID = @"tg";
    // 访问缓存池
    XMGTgCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];

    // 设置数据(传递模型数据)
    cell.tg = self.tgs[indexPath.row];

    return cell;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值