在最近的自定义UITableViewCell中遇到分割线间距问题,找了几种解决方法:
设置UITableViewCell分割线间距
方法一:
// 系统版本大于7.0
TableView.separatorInset = UIEdgeInsetsMake(0,0, 0, 0); //top left bottom right 上左下右边距相同
TableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine
方法二:
-(void)viewDidLayoutSubviews {
if ([_tableview respondsToSelector:@selector(setSeparatorInset:)]) {
[_tableview setSeparatorInset:UIEdgeInsetsZero];
}
if ([_tableview respondsToSelector:@selector(setLayoutMargins:)]) {
[_tableview setLayoutMargins:UIEdgeInsetsZero];
}
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
[cell setLayoutMargins:UIEdgeInsetsZero];
}
if ([cell respondsToSelector:@selector(setSeparatorInset:)]){
[cell setSeparatorInset:UIEdgeInsetsZero];
}
}
方法三:
//第一步:
//UITableView去掉自带系统的分割线
_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
//第二步:
//在自定义的Cell里重写drawRect:方法
#pragma mark - 绘制Cell分割线
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
CGContextFillRect(context, rect);
//上分割线,
CGContextSetStrokeColorWithColor(context, [UIColor colorWithRed:198/255.0 green:198/255.0 blue:198/255.0 alpha:1].CGColor);
CGContextStrokeRect(context, CGRectMake(0, 0, rect.size.width, 1));
//下分割线
CGContextSetStrokeColorWithColor(context, [UIColor colorWithRed:198/255.0 green:198/255.0 blue:198/255.0 alpha:1].CGColor);
CGContextStrokeRect(context, CGRectMake(0, rect.size.height, rect.size.width, 1));
}