解决iOS8下TableView cell的下面的线左边不能顶到头

iOS7之后,在使用UITableView的时候,UITableViewCell左侧会有默认15像素的空白。即separatorLine 不能顶到最左边.如下图所示:

tupian1

这里记录一下解决方案。

setSeparatorInset

@property (nonatomic) UIEdgeInsets separatorInset NS_AVAILABLE_IOS(7_0) UI_APPEARANCE_SELECTOR; // allows customization of the frame of cell separators  可以自定义cell separator的frame

这样在iOS7中可以通过 self.tableview setSeparatorInset:UIEdgeInsetsZero 来解决这个问题。

但是iOS8之后,这个解决方法不起作用了,下面是另外的解决方法:

- (void)viewDidLayoutSubviews
{
    if ([_tableView respondsToSelector:@selector(setSeparatorInset:)]) {
        [_tableView setSeparatorInset:UIEdgeInsetsZero];
    }

}

- (void)tableView:(UITableView *)tableView willDisplayCell:(nonnull UITableViewCell *)cell forRowAtIndexPath:(nonnull NSIndexPath *)indexPath
{
    if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) {
        [tableView setSeparatorInset:UIEdgeInsetsZero];
    }

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