分隔符是 UITableViewCell 的一部分吗?

Posted

技术标签:

【中文标题】分隔符是 UITableViewCell 的一部分吗?【英文标题】:Is the separator part of a UITableViewCell? 【发布时间】:2012-10-04 20:44:29 【问题描述】:

我编写了一个自定义 GridView(UIScrollView 子类)并决定使用标准的UITableViewCells 作为单元格,因为它们具有我需要的所有功能。

一切正常,但我注意到有时我在单元格顶部有一条细灰线。 我实际上认为UITableView 处理单元格的分隔符,它们实际上不属于UITableViewCell,但似乎我错了。

其实我想摆脱它们,但我不知道怎么做。

有没有人有这方面的经验或者是制作具有UITableViewCell 功能的自定义单元类的唯一方法?

截图如下:

【问题讨论】:

【参考方案1】:

经过一些实验,尝试错误和子视图迭代/检查我可以看出分隔符绝对是UITableViewCell 的一部分。感谢@Valeriy Van。

我的第一个问题的答案很简单:YES,分隔符是 UITableViewCell 的一部分。

但由UITableView严格处理,如果不被TableView填充则为空。


现在到上图中的行:

这些是不是分隔符。他们看起来就是这样,真是太巧合了。

当图形试图在亚像素精确坐标处绘制某些东西时会发生这种情况。 当可见对象(视图层)的坐标和/或大小(框架)在两个整数值之间并且 GL 试图正确渲染它时,就会发生这种情况。

由于“过度精确”的帧,Gl 尝试插入整数帧或只是不正确地舍入。

因此可能会发生,如上图所示,第一行被拉伸或 y 坐标错误一个像素。

如果您返回单元格高度的“过度精确”值,UITableView 也可能发生这种情况。

【讨论】:

这让我发疯了。很好的发现。【参考方案2】:

tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

已编辑:

下面是 UITableView.h 中的一行@property(nonatomic) UITableViewCellSeparatorStyle separatorStyle; // default is UITableViewCellSeparatorStyleSingleLine

UITableViewCell、UITableView、UITableViewController 旨在协同工作。而您的问题是您尝试单独使用 UITableViewCell 。从逻辑上讲,单元格分隔符不是单元格的特征,而是表格的特征。这就是为什么 separatorStyle 是 UITableView 的属性,而不是 UITableViewCell 的原因。嗯,不同的方法是可能的,苹果选择了这个。查看 UITableView.h 中“分隔符”子字符串出现的次数。查看 UITableViewCell.h:UITableViewCell 引用了 UITableView。如果 _tableView 为 nil,UITableViewCell 的编码足够准确,不会崩溃。我认为,如果 _tableView 为 nil,则单元格应用相同的默认值并使用默认分隔符绘制自身。

在您的情况下,您可以做些什么来摆脱分隔符?如果您不能按照设计的方式使用 UITableView,请以某种方式作弊。尝试用一些你需要的属性为单元格提供一些愚蠢的 tableview。

【讨论】:

看着我的眼睛,诚实地告诉我你已经阅读了我的问题。 我相信这是对您问题的有效答案,这就是您摆脱分隔符的方式...这就是您要问的。 不是。我明确表示,我没有使用 UITableView。 @yinkou,尽管你不太礼貌,但我会回答你的问题。 UITableViewCell、UITableView、UITableViewController 旨在协同工作。而您的问题是您尝试单独使用 UITableViewCell 。从逻辑上讲,单元格分隔符不是单元格的特性,而是表格的特性。这就是为什么 separatorStyle 是 UITable 视图的属性。查看 UITableView.h 以了解那里出现了多少个 tymes 'separator' 子字符串。查看 UITableViewCell.h:UITableViewCell 引用了 UITableView。如果 _tableView 为 nil,UITableViewCell 的编码足够准确,不会崩溃。 对不起 Valeriy,我不想无礼。但在我看来,你是一个不礼貌的人。因为在我看来,您甚至在阅读并理解实际问题之前就已尝试回答该问题。但没关系。

以上是关于分隔符是 UITableViewCell 的一部分吗?的主要内容,如果未能解决你的问题,请参考以下文章

更改 UITableViewCell 的分隔符颜色/厚度

UITableViewCell 和消失的分隔符

在 UITableViewCell 上绘制垂直分隔符

如何将 UITableViewCell 分隔符更改为自定义分隔符?

为单个 UITableViewCell 设置分隔符插入

UITableViewCell 使用 separatorInset 隐藏分隔符在 iOS 11 中失败