Establecer inserciones de separador personalizadas en UITableViewCell

En mi UITableView , quiero un efecto separador " centrado " en el que el separador se networkinguce 30 pt desde la izquierda y 30 desde la derecha. Logré lograrlo desde Interface Builder configurando la propiedad ' Inserciones personalizadas ' de TableView en sí, pero no puedo reproducir este comportamiento por código (y tengo que hacerlo de esta manera).

En particular, con esta pieza de código:

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

Y también esta:

 @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 } 

Obtuve el siguiente resultado en el iPhone 6S Simulator :

Separador

Parece que la vista de contenido del separador se contrae, pero la vista de background del separador no se contrae. También intenté eliminar la línea que establece el separador de la celda y el resultado fue un recuadro igual a UIEdgeInset.zero

Puedo confirmar que la línea blanca debajo del verde encendido es una vista relacionada con el separador, porque si cambio el separadorEstilo a .none , desaparece

¿Alguna ayuda?

El mejor enfoque para hacer un separador personalizado es deshabilitar el separador UITableView y crear una vista dentro de la celda con la altura que desee, como 1px, y luego agregar las restricciones a la vista para ubicarse en el centro de la celda.

Básicamente, esa primera pieza de código es correcta para configurar el separador, el color y el estilo, que es:

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

Y el que está en el separatorInset de la celda es para el contenido de la celda. Entonces estoy confundido de lo que realmente quieres lograr aquí. Desde su última frase, su contenido se networkingujo y fue causado por 'cell.separatorInset = separatorInset' y, de alguna manera, no quiere eso.

Entonces sugiero que elimine esta línea de código:

 cell.separatorInset = separatorInset