Как увеличить высоту разделителя UITableView? - PullRequest
47 голосов
/ 19 августа 2010

Я хочу больше места (10 пикселей) между каждым cell. Как я могу это сделать?

И я добавил этот код

tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

Ответы [ 16 ]

0 голосов
/ 15 марта 2019

Самое простое и безопасное решение этой проблемы - отключить разделитель таблиц и использовать UITableViewCell в качестве разделителя переменной высоты. Конечно, вам придется выполнить некоторую математическую задачу, чтобы выяснить, где находятся предметы, но на самом деле это нечетно / четно.

Он не сломается, и вы получите выгоду от перерабатываемых ячеек (без посторонних взглядов для очистки).

0 голосов
/ 09 марта 2019

Вот вариант, который может работать для некоторых людей

cell.layer.borderColor = UIColor.white.cgColor
cell.layer.borderWidth = 4.0
cell.layer.masksToBounds = true
0 голосов
/ 03 августа 2018

Свифт 4

Невозможно сделать разделитель по умолчанию выше. Вместо этого вам нужно добавить подпредставление, которое будет выглядеть как разделитель для каждой ячейки (и, необязательно, сделать ячейку выше). Вы можете сделать это, например, в cellForRowAtIndexPath или в подклассе UITableViewCell.

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

Добавьте это в ваш UITableViewController подкласс:

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.separatorStyle = .none
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)

    cell.backgroundView = UIView(backgroundColor: .white)
    cell.backgroundView?.addSeparator()

    cell.selectedBackgroundView = UIView(backgroundColor: .blue)
    cell.selectedBackgroundView?.addSeparator()

    // configure the cell

    return cell
}

Добавьте эти расширения в тот же файл внизу:

private extension UIView {
    convenience init(backgroundColor: UIColor) {
        self.init()
        self.backgroundColor = backgroundColor
    }

    func addSeparator() {
        let separatorHeight: CGFloat = 2
        let frame = CGRect(x: 0, y: bounds.height - separatorHeight, width: bounds.width, height: separatorHeight)
        let separator = UIView(frame: frame)
        separator.backgroundColor = .gray
        separator.autoresizingMask = [.flexibleTopMargin, .flexibleWidth]

        addSubview(separator)
    }
}
0 голосов
/ 03 августа 2018

Для Swift 4

Реализовано решение King-Wizard для Swift 4:

public func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    let additionalSeparatorThickness = CGFloat(4)

    let additionalSeparator = UIView(frame: CGRect(x: 0,
                                                   y: cell.frame.size.height - additionalSeparatorThickness, width: cell.frame.size.width, height: additionalSeparatorThickness))
    additionalSeparator.backgroundColor = UIColor.groupTableViewBackground
    cell.addSubview(additionalSeparator)

}
0 голосов
/ 10 мая 2012

Вы должны реализовать

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

метод делегата. и верните туда 100.0.

0 голосов
/ 12 апреля 2011

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

В Интерфейсном конструкторе я установил высоту строки равной 46.

В методе cellForRowAtIndexPathмоего делегата TableView я установил для рамки ячейки меньшее значение.

cell.frame=CGRectMake(44,0,tableView.bounds.size.width,44)

Это дает мне ячейку с высотой 44, которая соответствует ширине tableView, но место, предоставленное для строкибудет 46, как определено в IB.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...