UITableView部分中的iOS7最后一个单元格强制全宽分隔符

时间:2013-10-01 13:41:40

标签: ios objective-c uitableview

下面的UITableView有自定义UITableViewCells,我可以使用自定义UITableViewCell中的这一行调整分隔符:

self.separatorInset = UIEdgeInsetsMake(0, kDefaultSeparatorLeftInset, 0, 0);

但是,该部分底部的单元格有一个默认分隔符,它会覆盖我设置的自定义UIEdgeInsets

我希望所有分隔符的宽度相同,有没有办法在不重新绘制分隔符的情况下执行此操作?

UITableView with wide section separator in iOS7

4 个答案:

答案 0 :(得分:12)

经过一些实验,我发现唯一真正的解决方案是将UITableViewStyle设置为UITableViewStylePlain并使用以下设置空页脚:

-(UIView*)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    return [[UIView alloc] initWithFrame:CGRectZero];
}

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
    return 0.01f;
}

这对某些人来说不是一个令人满意的解决方案,因为UITableViewStylePlain没有提供UITableViewStyleGrouped的所有功能,但它给了我没有全宽分隔符的部分。

enter image description here

答案 1 :(得分:4)

经过一些实验,我找到了解决方案! tableFooterView可以像这样覆盖分隔符:

UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 1)];
UIView *v2 = [[UIView alloc] initWithFrame:CGRectMake(0, -1, 320, 2)];
v2.backgroundColor = [UIColor whiteColor];
v.backgroundColor = [UIColor whiteColor];
[v addSubview:v2];
self.tableView.tableFooterView = v;

答案 2 :(得分:2)

使用tableView本身的separatorInset属性,而不是单个单元格。 tableView的separatorInset设置默认插入,可以被单元格覆盖,以及底部“额外”单元格的插入。

答案 3 :(得分:2)

为表格提供一个空页脚:

self.tableFooterView = [[UIView alloc] init]