5

在我的UITableView我想要一个“居中”分隔符效果,其中分隔符从左侧缩小 30pt,从右侧缩小 30。我已经设法通过 Interface Builder 设置 TableView 本身的“ Custom Insets ”属性来实现这一点,但我无法通过代码重现这种行为(我必须这样做)。

特别是,使用这段代码:

self.tableView.separatorColor = .green
self.tableView.separatorStyle = .singleLine
self.tableView.separatorInset = UIEdgeInsets(top: 0, left: 30, bottom: 0, right: 30)

还有这个:

@objc(tableView:cellForRowAtIndexPath:) func tableView(_ tableView:  UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "recent_cell") as! TPExpandableTableViewCell
    //setting cell insets
    cell.separatorInset = separatorInset
    cell.item = items[indexPath.row]
    return cell
}

我在iPhone 6S Simulator上获得了以下输出:

分隔器

似乎分隔符内容视图缩小了,但分隔符背景视图没有。我还尝试删除设置单元格 separatorInset 的行,结果是插入等于UIEdgeInset.zero

我可以确认绿色下方的白线是与分隔符相关的视图,因为如果我将 separatorStyle 更改为.none,它就会消失

有什么帮助吗?

4

3 回答 3

16

基本上,第一段代码对于设置分隔符插图、颜色和样式是正确的,即:

self.tableView.separatorColor = .green
self.tableView.separatorStyle = .singleLine
self.tableView.separatorInset = UIEdgeInsets(top: 0, left: 30, bottom: 0, right: 30)

单元格的 separatorInset 是单元格的内容。所以我对你在这里真正想要实现的目标感到困惑。从你的最后一句话开始,你的内容被缩小了,这是由 'cell.separatorInset = separatorInset' 引起的,而你不希望这样。

所以我建议你删除这行代码:

cell.separatorInset = separatorInset
于 2016-11-22T15:31:40.897 回答
2

制作自定义分隔符的最佳方法是禁用 UITableView 分隔符并在单元格内创建一个具有您想要的高度(例如 1px)的视图,然后将约束添加到视图中,使其位于单元格的中心底部。

于 2016-11-22T14:27:25.610 回答
2

问题:

分隔符后面的空格实际上属于单元格的 backgroundColor,而不是单元格的contentView

解决方案

因此,在创建自定义单元格设置时,contentView.backgroundColor不会更改该空格,而是设置cell.backgroundColor意志。

例子:

将此添加到您的自定义单元格的初始化程序中。

cell.backgroundColor = UIColor.red
于 2019-03-12T13:50:50.747 回答