让分割线左对齐
在iOS8之后,UITableView的分割线距离左边会有一段距离;我们这里就让这段距离消失。
首先在iOS7里面让分割线左对齐只要一句代码就好了:
[self.tableView setSeparatorInset:UIEdgeInsetsZero];
但是在iOS8之后这样只能缩进1/2左右,还是不能完全左对齐。下面我就不多说了直接上代码吧!
#pragma <设置cell分割线>
// 让分割线左对齐
-(void)viewWillLayoutSubviews{
if ([self.tableView respondsToSelector:@selector(setSeparatorStyle:)]) {
[self.tableView setSeparatorInset:UIEdgeInsetsZero];
}
if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {
[self.tableView setLayoutMargins:UIEdgeInsetsZero];
}
}
-(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];
}
}
如何用的纯代码编写的可能会不能实现,那怎么办啊??别急,看下面:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *ID =@"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
if (!cell) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
}
// cell颜色
cell.backgroundColor = [UIColor colorWithRed:0.194 green:0.8828 blue:1.0 alpha:1.0];
cell.textLabel.text = [NSString stringWithFormat:@"%@==%zd",[self class],indexPath.row];
[self.tableView setLayoutMargins:UIEdgeInsetsZero];
[self.tableView setSeparatorInset:UIEdgeInsetsZero];
[cell setSeparatorInset:UIEdgeInsetsZero];
[cell setLayoutMargins:UIEdgeInsetsZero];
return cell;
}
这样子的话,分割线就左对齐了;
顺便分享点小技巧
当我们要显示固定的cell的行数又想下面的cell的分割线隐藏怎么办??当然可以自定义了,这里有个小技巧:直接设置footView就好了:
// 隐藏所以分割线
//tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
// 隐藏不需要的分割线
self.tableView.tableFooterView = [[UIView alloc]init];
还一点问题就是:
iOS8之后模拟器上面cell的分割线要拖动才能若隐若现看见,不拖动是不能看见的。这个原因是这样子的。因为5s,6,6s都到@x2 的屏幕由(2x2)4个像素点构成;而plus是(3x3)9个像素点构成;而在模拟器上只显示一个像素点;这么就解释了为什么若隐若现了。但是在真机上不会有问题的,只是在模拟器上存在这个问题而已。