2016-11-22 78 views
3

在我的UITableView中,我想要一个以'为中心的'分隔符效果,其中分隔符从左侧缩小30pt,从右侧缩小为30。 我已经设法从Interface Builder中完成设置TableView本身的'自定义插入'属性,但我无法通过代码重现此行为(我必须这样做)。在UITableViewCell上设置自定义分隔符插入

特别地,与此片的代码:

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模拟器以下输出:

Separator

Se ems就像分隔符内容视图缩小一样,但分隔符背景视图不会。我也尝试删除设置单元格的separatorInset的行,结果是一个插入等于UIEdgeInset.zero

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

任何帮助吗?

+0

你需要一个上海华盈,这将是基本视图,该视图的颜色为绿色,按您的要求和约束领导,trailling顶部,底部将为0. 现在将子视图添加到此基本视图中,其中包含前导,尾部0和顶部,底部等约束条件。 –

回答

2

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

+0

谢谢您的回答,但我更倾向于使用默认分隔符的更标准方式,如果有的话。 – donadev

+0

其实我没有找到像这样的好方法,我搜索了很多,但如果你真的想自定义分隔符,对我来说,我没有找到其他解决方案。 –

+0

非常感谢你! – donadev

11

基本上,代码,第一块是用于设置隔板插入,颜色和样式,其是正确的:

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 
+0

问题是绿色分隔符插入下面的白线! – donadev

+0

将你的tableView的背景颜色设置为“红色”,以便修复它。 – nferocious76