Я видел много неуклюжих решений, таких как подклассы UITableView
со скрытыми ячейками, и другие, менее оптимальные, в том числе.в этой теме.
При инициализации UITableView
установите для свойства rowHeight
UITableView
высоту, равную = высоте ячейки + желаемый разделитель / высота пространства.
Не использовать стандартные UITableViewCell
class, однако, вместо этого создайте подкласс класса UITableViewCell
и переопределите его layoutSubviews
метод.Там, после вызова super
(не забудьте об этом), установите высоту самой ячейки на желаемую высоту.
ОБНОВЛЕНИЕ БОНУСА 18 ОКТЯБРЯ / 2015:
Вы можете бытьнемного умный об этом.Решение выше в основном помещает «разделитель» в нижней части ячейки.Что действительно происходит, так это то, что высота строки управляется TableViewController, но размер ячейки изменяется немного ниже.Это приводит к тому, что разделитель / пустое пространство находятся внизу.Но вы также можете центрировать все подпредставления вертикально, чтобы оставить одинаковое пространство сверху и снизу.Например, 1pt и 1pt.
Вы также можете создать удобные свойства isFirst, isLast для своего подкласса ячеек.Вы должны установить их в yes в cellForRowAtIndexPath.Таким образом, вы можете обрабатывать крайние случаи для верхнего и нижнего разделителей внутри метода layoutSubviews, так как это будет иметь доступ к этим свойствам.Таким образом, вы можете обрабатывать крайние случаи для верхнего или нижнего - потому что иногда отдел дизайна хочет разделить N + 1, в то время как количество ячеек равно только N. Поэтому вы должны иметь дело либо с верхним, либо с загрузочным, особым образом,Но лучше делать это внутри ячеек, а не tableViewHeader или TableViewFooter.