自定义cell分割线

从iOS7开始tableView的系统自带的cell 分割线是不会占满整个宽度的 总是向右空出15个宽度,最近在写项目,遇到这个问题,特此在这里给出解决办法

1.UITableView中将分割线样式改为None

tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

2.自定义UITableViewCell中复写- (void)drawRect: (CGRect)rect方法

- (void)drawRect:(CGRect)rect
{
     CGContextRef context = UIGraphicsGetCurrentContext();
     CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
     CGContextFillRect(context, rect);
//上分割线,
    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
    CGContextStrokeRect(context, CGRectMake(0, 0, rect.size.width, 1));

//下分割线
    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
   CGContextStrokeRect(context, CGRectMake(0, rect.size.height, rect.size.width, 1));
}

这样就解决了cell分割线问题了

最近发现了一个更好的解决办法不需要重新自定义之前的那种方法对iOS7和8的适应不是很好,会出现问题。
最新的解决办法如下
在viewDidLoad中加上

if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {

[self.tableView setSeparatorInset:UIEdgeInsetsZero];

}

if ([self.tableView     respondsToSelector:@selector(setLayoutMargins:)]) {

[self.tableView setLayoutMargins:UIEdgeInsetsZero];

}

然后再代理方法willDisplayCell中加上

- (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];
}
}

OK了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值