当前位置: 首页 > 知识库问答 >
问题:

UITableView:显示最后一个单元格分隔符的正确方式

曾实
2023-03-14

问题是在表/节的最后一个单元格中显示分隔符的最正确方式是什么。

基本上这就是我所追求的。

我知道你可以不使用实际的分隔符,而是在单元格底部添加一条像素线。但我不喜欢这种方法,因为

  1. 选中/高亮显示某个单元格时,其分隔符和上一个单元格的分隔符将自动隐藏(请参见第二个屏幕截图,其中选择了“You't to be crazy”)。如果我使用一条像素线,这是我希望UITableView处理的事情,而不是我自己处理的事情(当单元格分隔符没有一直延伸到表视图的边缘时,这特别方便,分隔符和选定的单元格背景看起来不太好)。

UITableView参考中还有一些东西让我觉得有一种简单的方法可以得到我想要的:

在iOS 7及更高版本中,单元格分隔符不会一直延伸到表视图的边缘。此属性设置表中所有单元格的默认插入,就像rowHeight设置单元格的默认高度一样。它还用于管理在普通样式表底部绘制的“额外”分隔符。

有人知道如何准确地使用这些在普通样式表底部绘制的“额外”分隔符吗?因为这正是我需要的。我以为将separatorInset分配给UITableView,而不是UITableViewCell会起作用,但事实并非如此,最后一个单元格仍然缺少分隔符。

现在我只看到一个选项:有一个自定义的节页脚来模仿最后一个单元格的分隔符。这是不好的,特别是如果你想有一个实际的部分页脚使用tableView: titleForfoterInSect:方法。

共有3个答案

尉迟卓
2023-03-14

我刚刚找到了对我有用的东西。简而言之:给你的UITableView一个tableFoterView,并将其框架的高度设置为0。这使得一个实际的分隔符显示,具有正确的插图。

详细说明:如果您正在使用故事板,请将UIView拖动到表视图的底部(在左侧的树视图中),以便它显示在表视图单元的正下方,处于相同的分层级别。这将创建一个tableFolterView。当然,这也可以通过编程来完成。

然后,在UITableViewController的实现中:

UIView *footerView = self.tableView.tableFooterView;
CGRect footerFrame = footerView.frame;
footerFrame.size.height = 0;
[footerView setFrame:footerFrame];

让我知道,如果你的作品!如果您使用tableHeaderView,它也可能适用于第一个分隔符,不过我还没有尝试过。

苗信鸥
2023-03-14

当您将头视图或脚注视图添加到TableView时,最后一行分隔符将消失。

下面的示例将允许您在最后一个单元格上显示分隔符。您唯一需要实现的是在选择单元格后使分隔符消失,这样行为与其他单元格中的行为相同。

对于Swift 4.0

override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {

    let result = UIView()

    // recreate insets from existing ones in the table view
    let insets = tableView.separatorInset
    let width = tableView.bounds.width - insets.left - insets.right
    let sepFrame = CGRect(x: insets.left, y: -0.5, width: width, height: 0.5)

    // create layer with separator, setting color
    let sep = CALayer()
    sep.frame = sepFrame
    sep.backgroundColor = tableView.separatorColor?.cgColor
    result.layer.addSublayer(sep)

    return result
}
公良阳波
2023-03-14

这对我来说完美地为最后一个单元格添加了一个分隔符。玩得开心!

self.tableView.tableFooterView = [[UIView alloc] init];
 类似资料:
  • 我在我的列表视图中添加了一个可绘制的分隔线,但它出现在除最后一项之外的所有项目中。 我在列表中只有5个项目,所以在最后一个项目之后都是空白,我想在最后一项之后也有一个分隔符 我试过这个: 在我的列表视图中。但它不起作用 非常感谢。

  • 问题内容: 对于在字符串中 最后一次 出现定界符时拆分字符串的建议Python惯用法是什么?例: 接受第二个参数,即要分割的分隔符的出现。像常规列表索引一样,表示末尾的末尾。如何才能做到这一点? 问题答案: 使用 或代替: 可让您指定分割次数,而仅分割一次,但总是返回固定数量的元素(前缀,定界符和后缀),并且对于单个分割情况而言更快。 演示: 两种方法都从字符串的右侧开始拆分;通过将最大值作为第二

  • 在tableView中,我在单元格之间设置了分隔线。我允许选择多个单元格。以下是设置选定单元格背景颜色的代码: 问题是,如果选择了两个相邻的单元格,则在iOS7中它们之间没有分隔符线,而在iOS6中则有(如预期的那样)。 我甚至尝试将的帧高度设置为,但这也不起作用。 有什么想法吗?

  • 所以在匹配“attributeList”的最后一个模板中,我需要显示其中的内容,按分隔符“,”拆分。不幸的是,我尝试的一切都不奏效;令牌化,字符串函数,...自从im在1.0版上。分离器不工作。我需要帮助! ` XSLT: 我想要的输出是: 属性:豪华、半板...属性:豪华、全板、按摩浴缸

  • 在字符串中分隔符的最后一次出现时拆分字符串的推荐Python习惯用法是什么?例如: 接受第二个参数,该参数是要拆分的分隔符的引用。与常规列表索引一样,表示从末尾开始的最后一个。如何做到这一点?

  • 我使用autolayout在故事板中创建了一个UIViewController,它有一个嵌入式UITableView。由于某些原因,表视图部分上方存在空白。我的期望是tableview将所有可用空间分割为单元格,并使单元格从顶部开始。 当使用自动布局和大小类时,是什么导致表视图在第一部分上方添加空白?