OC学习笔记 - UI基础9

本章知识点:UITableView索引条,自定义等高的Cell,字典转模型框架,自定义分隔线,静态Cell

UITableView索引条

//返回索引条的文字
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
    //第一种方式
     NSMutableArray *titles = [NSMutableArray array];
     for (XMGCarGroup *group in self.carGroups) {
        [titles addObject:group.title];
    }
     return titles;
    //第二种方式
    //抽取self.carGroups 这个数组中每一个元素(XMGCarGroup对象)的title属性的值,放在一个新的数组中返回
     return [self.carGroups valueForKeyPath:@"title"];
}
//设置索引条的文字颜色
self.tableView.sectionIndexColor = [UIColor redColor];
// 设置索引条的背景颜色
self.tableView.sectionIndexBackgroundColor = [UIColor yellowColor];

自定义等高的Cell

  1. ViewController.m
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     XYCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
     if (cell == nil) {
          cell = [[XYCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
    }  
     return cell;
}

XYCell.m

//在这个方法中添加所有的子控件
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
      if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
     //图标
      UIImageView *iconImageView = [[UIImageView alloc] init];
      iconImageView.backgroundColor = [UIColor redColor];
     [self.contentView addSubview:iconImageView];
      self.iconImageView = iconImageView;
     }
      return self;
}
  1. 设置控件布局
//方式一:设置所有的子控件的frame
- (void)layoutSubviews
{
      [super layoutSubviews];
       CGFloat space = 10;
       CGFloat contentViewW = self.contentView.frame.size.width;
       CGFloat contentViewH = self.contentView.frame.size.height;
       CGFloat iconX = space;
       CGFloat iconY = space;
       CGFloat iconW = 80;
       CGFloat iconH = contentViewH - 2 * space;
       self.iconImageView.frame = CGRectMake(iconX, iconY, iconW, iconH);
}
//方式二:autolayout
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
       if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
      //图标
       UIImageView *iconImageView = [[UIImageView alloc] init];
      [self.contentView addSubview:iconImageView];
       self.iconImageView = iconImageView;
      [iconImageView makeConstraints:^(MASConstraintMaker *make) {
              make.top.left.equalTo(self.contentView).offset(spcae);
              make.bottom.equalTo(self.contentView).offset(-spcae);
              make.width.equalTo(80);
      }];
       return self;
}

字典转模型框架

  1. Mantle
    所有模型必须继承于MTModel
  2. JSONModel
    所有模型必须继承于JSONModel
  3. MJExtension
    不需要继承其他类

自定义分隔线

  1. 在UITableViewCell底部添加UIView并自定义宽度与颜色
    注意:如果调低透明度,可以让分隔线看起来细一点

静态Cell

  1. 静态单元格:不会随数据的改变而改变,当在storyboard中创建好后,显示的数据内容和模板样式都固定不变。需要修改,只能在storyboard中修改
    使用场景:界面内容固定,不会发生任何变化,此时使用静态单元格创建界面比较方便
    注意:不能通过在UIView中拖拽UITableView的方式来使用静态单元格,需要创建新的UITableViewController,并在属性中将content改为Static Cells
  2. 静态单元格的使用步骤
    1 拖拽一个UITableViewController到storyboard中
    2 将tableView的content属性设置为 static cell
    3 删除多余静态单元格,保留一个
    4 根据是否需要分组,设置tableView为plain或者grouped样式
    5 如果是grouped样式,在左侧控制器中设置每一组的行数
    6 选中单元格,为单元格设置相关内容数据

你可能感兴趣的:(OC学习笔记 - UI基础9)