这篇文章主要介绍如何自定义tableView的上下分割线和调整系统分割线的位置。
介绍两种方法:
第一种:
首先,设置tableView的分割线不显示,
tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
然后,在重写的UITableViewCell中重写方法 - (void)drawRect:(CGRect)rect
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
CGContextFillRect(context, rect);
//上分割线,
// CGContextSetStrokeColorWithColor(context, [UIColor colorWithHexString:@"e8e8e8"].CGColor);
// CGContextStrokeRect(context, CGRectMake(5, -0.5, rect.size.width - 10, 0.5));
//下分割线
CGContextSetStrokeColorWithColor(context, [UIColor colorWithHexString:@"e8e8e8"].CGColor);
CGContextStrokeRect(context, CGRectMake(0, rect.size.height, rect.size.width, 0.5));
}
第二种(使用系统自带的分割线,让分割线从头部显示):
ios7以上系统可以使用
-(void)viewDidLayoutSubviews
{
if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {
[self.tableView setSeparatorInset:UIEdgeInsetsMake(0,0,0,0)];
}
if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {
[self.tableView setLayoutMargins:UIEdgeInsetsMake(0,0,0,0)];
}
}
-(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];
}
}