cell让分割线左对齐

让分割线左对齐

在iOS8之后,UITableView的分割线距离左边会有一段距离;我们这里就让这段距离消失。

首先在iOS7里面让分割线左对齐只要一句代码就好了:

[self.tableView setSeparatorInset:UIEdgeInsetsZero];

但是在iOS8之后这样只能缩进1/2左右,还是不能完全左对齐。下面我就不多说了直接上代码吧!

#pragma <设置cell分割线>
//  让分割线左对齐
-(void)viewWillLayoutSubviews{
    if ([self.tableView respondsToSelector:@selector(setSeparatorStyle:)]) {
        [self.tableView setSeparatorInset:UIEdgeInsetsZero];
    }
    if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {
        [self.tableView setLayoutMargins:UIEdgeInsetsZero];
    }
}
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
        [cell setSeparatorInset:UIEdgeInsetsZero];
    }

    if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
        [cell setLayoutMargins:UIEdgeInsetsZero];
    }
}

如何用的纯代码编写的可能会不能实现,那怎么办啊??别急,看下面:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *ID =@"cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
    if (!cell) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
    }
    //    cell颜色
    cell.backgroundColor = [UIColor colorWithRed:0.194 green:0.8828 blue:1.0 alpha:1.0];
    cell.textLabel.text = [NSString stringWithFormat:@"%@==%zd",[self class],indexPath.row];

    [self.tableView setLayoutMargins:UIEdgeInsetsZero];
     [self.tableView setSeparatorInset:UIEdgeInsetsZero];
      [cell setSeparatorInset:UIEdgeInsetsZero];
     [cell setLayoutMargins:UIEdgeInsetsZero];
      return cell;
}

这样子的话,分割线就左对齐了;

顺便分享点小技巧

当我们要显示固定的cell的行数又想下面的cell的分割线隐藏怎么办??当然可以自定义了,这里有个小技巧:直接设置footView就好了:

 //  隐藏所以分割线
    //tableView.separatorStyle =   UITableViewCellSeparatorStyleNone;

    //  隐藏不需要的分割线
    self.tableView.tableFooterView = [[UIView alloc]init];

还一点问题就是:

iOS8之后模拟器上面cell的分割线要拖动才能若隐若现看见,不拖动是不能看见的。这个原因是这样子的。因为5s,6,6s都到@x2 的屏幕由(2x2)4个像素点构成;而plus是(3x3)9个像素点构成;而在模拟器上只显示一个像素点;这么就解释了为什么若隐若现了。但是在真机上不会有问题的,只是在模拟器上存在这个问题而已。

你可能感兴趣的:(cell让分割线左对齐)