2016-11-22 11 views
3

В моем UITableView я хочу «» с разделителем-разделителем, в котором разделитель уменьшается на 30 пунктов слева и 30 справа. Мне удалось добиться того, что из интерфейса Builder задано свойство « Custom Insets» самого TableView, но я не могу воспроизвести это поведение по коду (и я должен сделать это таким образом).Установите пользовательские разделительные вставки на UITableViewCell

В частности, этот кусок кода:

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

А также этот:

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

я получил следующий вывод на iPhone 6S Simulator:

Separator

Seem s, что представление содержимого разделителя становится сжатым, но представление фона разделителя не получает. Я также попытался удалить строку, которая устанавливает значение separatorInset ячейки, и результат был вставкой, равной UIEdgeInset.zero

Я могу подтвердить, что белая линия под зеленым цветом является видом, связанным с разделителем, потому что если я изменю разделительStyle до .none, он исчезает

Любые помощь?

+0

вам нужен один SuperView, который будет базой вид, цвет этой точки зрения будет зеленым согласно вашему требованию, а также ограничение для ведущего, trailling сверху , а внизу будет 0. Теперь добавьте subview в это базовое представление, которое будет иметь ограничения, такие как ведущий, trailing 0 и top, снизу до 1. –

ответ

2

Наилучший подход к созданию пользовательского разделителя - это отключить разделитель UITableView и создать представление внутри ячейки с требуемой высотой, такой как 1px, а затем добавить ограничения для представления в центре нижней части ячейки.

+0

Спасибо за ответ, но я бы предпочел более стандартный способ использования разделителей по умолчанию , если таковой имеется. – donadev

+0

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

+0

Хорошо, спасибо вам большое! – donadev

11

В принципе, это первая часть коды является правильной для установки сепаратора врезки, цвета и стиля, который:

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

И один в separatorInset ячейки для содержимого ячейки. Поэтому я смущен тем, чего вы на самом деле хотите достичь здесь. Из вашей последней фразы ваше содержание было сжато, и это было вызвано «cell.separatorInset = separatorInset», и вы как-то не хотите этого.

Так что я полагаю, что вы удалите эту строку кода:

cell.separatorInset = separatorInset 
+0

Проблема заключается в белой линии под вставкой зеленого сепаратора! – donadev

+0

Установите цвет фона tableView на «красный», чтобы исправить его. – nferocious76