我有一个包含两个部分的表视图,没有疯狂的代码,只有我的委托方法。 它工作得很好,就像我希望它工作。它应该看起来像这个截图:
现在问题是:有时在滚动或轻弹scoll视图到边界时,会发生这种情况(如果你看不到它:第二部分顶部有1或1/2像素的灰色)标题,不打算如此):
那么,这是一个iOS 7.1或7.x错误吗?我没有使用标头的自定义视图。有谁知道如何解决这个问题?
反馈真的很感激。
答案 0 :(得分:2)
我有同样的问题,我争了几个星期,我解决它的方法是将tableView的separatorStyle设置为UITableViewCellSeparatorStyleNone,并添加一个自定义子视图,该子视图是一行到单元格' s contentView。
然后在您的cellForRowAtIndexPath方法中,隐藏该部分中最后一个单元格的行子视图:
- (UIView *)lineView
{
// Your frame will vary.
UIView *colorLineView = [[UIView alloc]initWithFrame:CGRectMake(82, 67.5, 238, 0.5)];
colorLineView.backgroundColor = [UIColor blackColor];
return colorLineView;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell;
static NSString *identifier = @"cellIdentifier";
UIView *lineView = [self lineView];
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
if (cell == nil)
{
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
cell.selectionStyle = UITableViewCellSelectionStyleDefault;
[cell.contentView addSubview:lineView];
}
if (indexPath.section == 0)
{
if (indexPath.row == keys.count -1)
{
lineView.hidden = YES;
}
}
return cell;
}
答案 1 :(得分:0)
它可能会使用滚动条中的分隔符循环其中一个单元格视图。这是一个很长的镜头,但如果您尝试通过返回空视图来尝试调整该部分的页脚视图呢?
-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
return [[UIView alloc] init];
}
当你只有几行时,这也是从表中删除空单元格的好方法。
答案 2 :(得分:0)
我尝试了多种不同的东西,我找到的最干净的方法就是这个。 我为标题创建了一个自定义视图,但希望它看起来与原始未修改的标题相同:
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 34)];
[headerView setBackgroundColor:[UIColor groupTableViewBackgroundColor]];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(15, 0, tableView.frame.size.width, 34)];
[label setFont:[UIFont boldSystemFontOfSize:14]];
if (section == 0) {
NSMutableArray *difficultyArray = [dictionary objectForKey:@"Difficulty"];
NSString *difficulty = [difficultyArray objectAtIndex:0];
[label setText:[NSString stringWithFormat:@"Time Challenge (%@)", difficulty]];
} else {
[label setText:@"Freeplay (5x5 board)"];
}
[headerView addSubview:label];
return headerView;
}
现在我们得到了没有自定义标题视图的部分,但错误仍然存在。我简单明了:
UIView *lineFix = [[UIView alloc] initWithFrame:CGRectMake(0, 77.5, self.tableView.frame.size.width, 0.5)];
lineFix.backgroundColor = [UIColor groupTableViewBackgroundColor];
[self.tableView addSubview:lineFix];
现在我们设置一个高度为0.5像素的有缺陷的分离器的视图,分离器不再可见。在两个部分标题之间现在是0.5高度视图,不应该存在,但因为我设置它与部分背景颜色相同的颜色,它是不明显的。视图移动,因为它是tableview的子视图,与tableview相同。
如果您有任何疑问,请添加评论。
答案 3 :(得分:0)
这是一个非常古老的问题,但正确的解决方案是在viewForHeader
方法中创建您自己的自定义标头并设置headerView.clipsToBounds = true