2017-02-20 2 views
3

У меня есть базовые ячейки таблицы, которые я хочу установить между ними.Добавление промежутка между базовыми ячейками просмотра таблицы

enter image description here

Я попытался

cell.contentView.layoutMargins.top = 8 

и

cell.layoutMargins.top = 8 

, но это не сработало. Я знаю, что могу создать пользовательскую ячейку, но я хочу знать, как я могу добавить поля таким образом.

EDIT:

Тогда я изменил стиль ячейки обычаю:

enter image description here

и добавил вид, так что я могу установить некоторые ограничения к нему

enter image description here

, но результаты все те же, без интервальной ставки ween, и это вроде бы игнорировало пользовательский вид, я думаю, потому что ему нужен собственный класс для ячейки, но я не хочу этого делать.

enter image description here

+0

просто создать ячейку, которая содержит вид клеток + дополнительный вид пространства (что имеет то же цвета в качестве фона), то это будет выглядеть как расстояние между ячейкой – Tj3n

+0

Самым простым и самым коротким путем для мне нужно было добавить пользовательское представление внизу – Koushik

ответ

4

Вы не должны добавлять интервала между ячейками самого по себе, а скорее добавить обычай containerView в клетки contentView с верхними и/или нижними ограничениями.

enter image description here

+0

Это звучит неплохо, но при этом появляется сообщение о том, что представления контейнера не могут быть помещены в представление, которое повторяется во время выполнения. Затем я изменил конфигурацию ячеек от Basic до Custom, я добавил представление в Content View и сыграл с ограничениями, но это не имело никакого эффекта. – fullMoon

+0

@fullMoon Пожалуйста, добавьте свой макет к вопросу, чтобы я мог найти проблему с ним. – alexburtnik

0

Вы достичь добавления расстояние между ячейками, чтобы сделать NumberOfSections = array.count и сделать каждая секция содержит только одну строку. А затем определите headerView и его высоту.

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
     return cellSpacingHeight 
    } 
+2

Это своего рода обходной путь, но не делайте этого. Секции просмотра таблицы предназначены для другой цели. Вы окажетесь в неудобном положении, когда будете следовать этому совету, и в какой-то момент позже действительно нужно отделить некоторые ячейки от секций – alexburtnik

0

Если у вас есть один раздел, попробуйте переставить количество строк в разделе и количество разделов в таблицеView. Тогда для интервал между вами можете использовать делегат:

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
     return 10 
    } 
1

Пожалуйста, попробуйте вы можете создать заголовок между два ячейкой и добавить пространство

func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return array.count 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
{ 
    return 1 // Because we need to space between two cell 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
{ 
    //Configure your cell 

    let cel:UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell! 
    cel.textLabel?.text = array[indexPath.section] //please use section because we have only one row for all section 
    return cel 
} 

func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat{ 
    return 15 // whatever you want space between two cell 
} 
0

В общем, работе с UITableViewCell-й или его contentViewlayoutMargins - это склонность к ошибкам. По моему опыту layoutMargins как соты, так и contentView сбрасываются в нескольких точках во время перезагрузки таблицы. Существует два способа обхода:

  1. Использовать дистанционную ячейку. Например, просто создайте прозрачный подкласс UITableViewCell с определенным ограничением по высоте, установленным в contentView.
  2. Используйте прозрачный подкласс UITableViewCell и добавьте свой собственный (возможно непрозрачный) подъярус к contentView и установите ограничения сверху/снизу на 1/2 желаемого интервала. Вы можете переопределить setHighlighted:animated, чтобы контролировать, как элемент выглядит при выборе.Это метод, который я использую на скриншотах. Он также отлично подходит для добавления поля слева/справа.

enter image description here enter image description here

Смежные вопросы