cell设置分割线占满cell的思路

1.用系统的

    iOS7后出现的,在UITableView类里面有一个separatorInset属性,思考将这个属性清空设置为UIEdgeInsetsZero,试试效果,可能会不成功,因为8.0出现了Margins属性,在iOS5之前是没有margin,5之后出现的,在tableView类里找不到margin属性,所以就继续在它的父类找,一直找到UIVIew里有一个layoutMargins属性,所以设置tableView的layoutMargins为UIEdgeInsetsZero,可能还是不成功,那就考虑是不是设置cell的layoutMargins,发现成功了,但是分割线只用设置一次就好了,如果直接在创建cell的代理方法里写,每次创建都会清空margin,所以这个只用设置一次就好了,最好在加载xib必定会走自定义cell中的- (void)awakeFromNib方法且只会调用一次,所以在这里设置即可


可是以上设置只有在iOS8之后才可以,之前的版本的话就不支持,甚至有可能报错。所以推荐下面的万能的方式

2.万能的方式

首先分析tableView的底层实现,先确定,cell是先计算高度,还是先创建cell

cell设置分割线占满cell的思路_第1张图片

打印了两个方法的调用顺序,发现tableView总是先设置好cell的frame然后在创建cell的,所以就想到了一个思路,

首先取消系统自带的cell分割线样式

           self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

将cell的背景色设置为分割线的颜色,然后在设置cell的frame的时候将cell的高度-1,这时候就有分割线显示了。


在自定义cell里重写setFrame方法,然后查看frame

cell设置分割线占满cell的思路_第2张图片

果然设置成功了,不管什么版本都不会报错。


你可能感兴趣的:(cell设置分割线占满cell的思路)