Я был в одной лодке. Сначала я попытался переключиться на разделы, но в моем случае это было больше головной болью, чем я думал, поэтому я искал альтернативу. Чтобы продолжал использовать строки (и не связывался с тем, как вы получаете доступ к данным вашей модели), вот что сработало для меня, просто используя маску :
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath)
{
let verticalPadding: CGFloat = 8
let maskLayer = CALayer()
maskLayer.cornerRadius = 10 //if you want round edges
maskLayer.backgroundColor = UIColor.black.cgColor
maskLayer.frame = CGRect(x: cell.bounds.origin.x, y: cell.bounds.origin.y, width: cell.bounds.width, height: cell.bounds.height).insetBy(dx: 0, dy: verticalPadding/2)
cell.layer.mask = maskLayer
}
Все, что вам осталось сделать, это увеличить высоту ячейки на то же значение, что и желаемое verticalPadding
, а затем изменить внутренний макет так, чтобы любые виды, которые имели расстояние до краев ячейка имеет то же расстояние, увеличенное на verticalPadding/2
. Небольшой недостаток: вы получаете verticalPadding/2
отступы сверху и снизу tableView, но вы можете быстро это исправить, установив tableView.contentInset.bottom = -verticalPadding/2
и tableView.contentInset.top = -verticalPadding/2
. Надеюсь, это кому-нибудь поможет!