Iphone 分组UITableView中节标题和第一个单元格之间的透明像素行

Iphone 分组UITableView中节标题和第一个单元格之间的透明像素行,iphone,uikit,transparent,uitableview,Iphone,Uikit,Transparent,Uitableview,正如标题所说,我有一个无法摆脱的透明像素行问题。 我附上了一张价值1000字的图片 节页脚不存在问题(我也在使用自定义视图)。 我已检查并再次检查返回的截面高度大小是否正确 有什么想法吗 编辑: 我添加了一个测试项目,这样你就可以玩了。紫色表示背景色。白色矩形是页眉/页脚,浅灰色是一些虚拟单元。该问题在项目中清晰可见 你也会看到我使用了很多清晰的颜色。不幸的是,为了隐藏问题而改变颜色对我来说不是一个可行的解决方案 请随意尝试一下(或更多) 非常感谢 EDIT2: 经过进一步调查,我得出结论,

正如标题所说,我有一个无法摆脱的透明像素行问题。
我附上了一张价值1000字的图片

节页脚不存在问题(我也在使用自定义视图)。 我已检查并再次检查返回的截面高度大小是否正确

有什么想法吗

编辑:
我添加了一个测试项目,这样你就可以玩了。紫色表示背景色。白色矩形是页眉/页脚,浅灰色是一些虚拟单元。该问题在项目中清晰可见

你也会看到我使用了很多清晰的颜色。不幸的是,为了隐藏问题而改变颜色对我来说不是一个可行的解决方案

请随意尝试一下(或更多)

非常感谢

EDIT2:

经过进一步调查,我得出结论,像素线来自tableview分隔符。在测试项目中,我将分离器颜色设置为clearColor。如果我把它换成另一种颜色,我会得到新颜色的那一行像素。尽管我将分隔符样式设置为“无”,但它似乎对分组表没有任何影响。

经过近2天的测试(以及脱发),我终于找到了这个样式

正如我在上面的评论中所说,在heightForHeader方法中简单地返回一个较小的高度是行不通的。要使其工作,您需要获取所需的标题视图,将其插入到具有完全相同大小的虚拟/容器视图中,然后将此容器作为标题提供给tableView

然后,当你为标题返回一个较小的大小时,它神奇地(对我来说真的很神奇)成功地重叠了那讨厌的像素行

顺便说一句,我的结论是像素行是由于细胞分隔线


如果有人感兴趣,我可以再次上传工作测试项目。

我不确定这是否是您的要求,但我在两天前发现,您可以减少tableView中各部分之间的默认空间

通过使标题的高度
heightForHeader
返回一个负值!肮脏,但是。。。工作


我也遇到了这个问题。我有一个分组分区的UITableView。在第一个部分标题和第一个单元格之间,有一个1点(2个视网膜像素)的间隙,背景通过

如果背景单元格颜色一致,则可以指定UITableView的背景颜色以隐藏此间隙

在我的例子中,backgroundColor/backgroundView用于其他单元格上的非滚动图案背景。mluisbrown提出的解决方案非常有效。我想再次强调这一解决办法:

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
   UIView* topTabView = /* initialized elsewhere */;
   CGRect sectionHeaderSize = CGRectMake(0, 0, 320, 46);
   UIView* wrapperView = [[UIView alloc] initWithFrame:sectionHeaderSize];
   topTabView.frame = sectionHeaderSize;
   [wrapperView addSubview:topTabView];
   return wrapperView;
}

在标题视图和第一行之间添加分隔符:-在视图中为节中的标题添加一个子视图self.separator/@property(非原子,强)UIImageView*分隔符

- (CGFloat)tableView:(UITableView *)tableView
heightForHeaderInSection:(NSInteger)section {

return 41; 
}


- (UIView *)tableView:(UITableView *)tableView
viewForHeaderInSection:(NSInteger)section {

self.headerView = [[UIView alloc] init];
self.headerView.backgroundColor = [UIUtils colorForRGBColor:TIMESHEET_HEADERVIEW_COLOR];

self.separator = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"seperator.png"]];
self.separator.frame = CGRectMake(0,40,self.view.frame.size.width,1);
[self.headerView addSubview:self.separator];
return self.headerView;

}

分组的UITableView将页眉、单元格和页脚作为单个实体。因此,白色透明视图是页脚视图,可以通过减小页脚高度来处理,如屏幕截图所示。我希望它能起作用
祝您好运:)

您是否尝试过返回比所需高度低10像素的图像?是的。这种行为不知何故尚未确定。标题视图将显示为裁剪,但透明行有时仍会显示。如果我滚动离开并返回,我将得到一个白色的行,或一个黑色的行(可能是从裁剪区域中得到的)或一个透明的行。我甚至尝试将标题视图中的UIImage扩展到视图之外,并删除了“clip subviews”标志,因为我可以以某种方式覆盖该空间。运气不好:(我遇到了完全相同的问题(这肯定是一个iOS错误),只在一个虚拟UIView中返回我的标题视图就解决了问题,而不必返回较小的标题大小;[view addSubview:headerView];return view;在我的例子中,我使用的是故事板,我返回的标题视图实际上是IB中创建的原型
UITableViewCell
。我怀疑只有当标题视图的类型是
UITableViewCell
时才会出现问题,因此我测试了只返回一个空白(但有颜色)
UIView
果然,行消失了。因此,将
UITableViewCell
包装在
UIView
中可以避免这个错误。如果标题视图的类型是
UITableViewCell
,导致出现分隔符,那么苹果一定在做一些稍微不同的事情。该方法要求一个UIView,而不是UITableViewCell是UIView的一个子类,我只需返回UITableViewCell.contentView即可解决问题;