自定义高等Cell之frame


  • 1.创建一个继承自UITableViewCell的子类,比如IZGrouponCell

    • 1.1 在IZGrouponCell.m中重写initWithStyle:reuseIdentifier:方法
      • 添加子控件
      • 设置子控件的初始化属性(比如文字颜色、字)
    //在这个方法中添加所有的子控件
        -(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
            {
                if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
                    // ......
                }
                return self;
            }
- **1.2 重写`-layoutSubviews`方法**
    >- 一定要调用`[super layoutSubviews]`
    >- 在这个方法中计算和设置所有子控件的frame
```objc
//在这个方法中计算所有子控件的frame
    -(void)layoutSubviews
    {
        [super layoutSubviews];
        // ......
    }
```
- **1.3 需要提供一个模型属性,重写模型的set方法,在这个方法中设置模型数据到子控件**
    >- 在IZGrouponCell.h文件中提供一个模型属性,比如IZGroupon模型
@class IZGroupon;
@interface IZGrouponCell : UITableViewCell
/** 团购模型数据 */
@property (nonatomic, strong) IZGroupon *groupon;
@end
    >-  在IZGrouponCell.m中重写模型属性的set方法
-(void)setGroupon:(IZGroupon *)groupon
{
    _groupon = groupon;
        // .......
}
  • 2.在控制器中

    • 利用registerClass...方法注册Cell类

[self.tableView registerClass:[IZGrouponCell class] forCellReuseIdentifier:ID];

    - **给cell传递模型数据**

    ```objc
        - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
        {
            // 访问缓存池
            IZGrouponCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];

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

            return cell;
        }

你可能感兴趣的:(自定义高等Cell之frame)