Свифт 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)
}
}