tableView的分割线长短控制

开发中,我们经常需要定制tableView,其中tableView中cell的分割线,系统默认的是分割线与左侧没有顶满,右侧顶满了,这样不符合定制的要求;

UITableViewDelegate
/** 设置tableview的分割线的显示*/
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
[self.tableView setSeparatorInset:UIEdgeInsetsMake(0, 15, 0, 15)];
}
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
[self.tableView setLayoutMargins:UIEdgeInsetsMake(0, 15, 0, 15)];
}
}

可能有一个疑问,为甚么设置一个分割线的长度,需要这两个方法,这两个方法不是都是设置长度吗?一个不行吗?这个问题,我们可以从Apple的源码中找到答案,我们按住option键,鼠标点击方法名称,就可以跳转到apple源码声明中。


layoutMargins
separatorInset

我们可以看到NS_AVAILABLE_IOS(8_0)和NS_AVAILABLE_IOS(7_0)
/** NS_AVAILABLE_IOS(8_0),这个方法可以在iOS8.0及以后的版本中使用,如果在比8.0更老的版本中调用这个方法,就会引起崩溃。*/

所以,个人理解是同时使用两个方法是为了适配不同的系统。

你可能感兴趣的:(tableView的分割线长短控制)