Ваш код изменяет цвет фона свойства contentView
ячейки. Размер этого вида изменяется при появлении кнопки удаления, поэтому вам нужно вместо этого установить цвет фона самой ячейки (которая также является подклассом UIView
). Это должно это исправить.
Кроме того, чтобы учесть повторное использование ячеек и изменение индексов, вы должны установить цвет фона независимо от того, является ли текущая ячейка четной или нечетной. Всегда явно устанавливайте цвет на что-либо (даже если он белый), чтобы при прокрутке не возникали странные эффекты с повторно используемыми ячейками.
Я также только что заметил в UITableViewCell
документах это примечание:
Если вы хотите изменить цвет фона ячейки (устанавливая цвет фона ячейки через свойство backgroundColor, объявленное UIView), вы должны сделать это в tableView: willDisplayCell: forRowAtIndexPath: метод делегата, а не в tableView: cellForRowAtIndexPath: источника данных.
Итак, сделайте это вместо этого.