在UITableViewCell上设置自定义分隔符插入

时间:2016-11-22 14:24:50

标签: ios swift uitableview separator uiedgeinsets

在我的UITableView我想要一个' 居中'分隔符效果,其中分隔符从左侧收缩30pt,从右侧收缩30°。 我已设法通过Interface Builder设置' 自定义插播' TableView本身的属性,但我不能通过代码重现这种行为(我必须这样做)。

特别是这段代码:

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上获得了以下输出

Separator

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

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

有帮助吗?

3 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

问题:

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

解决方案

因此,在创建自定义单元格时,设置cell.backgroundColor不会更改该空格,但是设置cell.backgroundColor = UIColor.red 会更改。

示例:

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

{{1}}