Возможно ли увеличить толщину разделительной линии UITableView?

Я везде искал. Попытка увеличить толщину этой линии. Есть ли способ сделать это программно? Благодаря

Ответ 1

Единственный способ сделать это: установить separtorStype на UITableViewCellSeparatorStyleNone, а затем у вас есть два варианта

  • Создайте пользовательский UITableViewCell с разделителем внутри него или
  • Создайте альтернативный UITableViewCell с помощью разделителя, который вы хотите, и разместите внутри всех других ячеек. Если вы хотите отобразить 3 строки в таблице, вы должны отобразить 5 вместо альтернативной ячейки в строках 2 и 4.

Ответ 2

private let kSeparatorId = 123
private let kSeparatorHeight: CGFloat = 1.5

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath)
{
    if cell.viewWithTag(kSeparatorId) == nil //add separator only once
    {
        let separatorView = UIView(frame: CGRectMake(0, cell.frame.height - kSeparatorHeight, cell.frame.width, kSeparatorHeight))
        separatorView.tag = kSeparatorId
        separatorView.backgroundColor = UIColor.redColor()
        separatorView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]

        cell.addSubview(separatorView)
    }
}

Ответ 3

Установите разделители таблиц в UITableViewCellSeparatorStyleNone и настройте backroundView ячейки с цветом bg, как вам нравится, для разделителей и подвью, с помощью которых можно замаскировать его столько, сколько хотите. Что-то вроде этого:

UIView * bg = [[UIView alloc] initWithFrame:cell.bounds];
bg.backgroundColor = [UIColor darkGrayColor];
bg.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;

UIView * overBg = [[UIView alloc] initWithFrame:CGRectInset(cell.bounds, 0, 4.)];
overBg.backgroundColor = [UIColor whiteColor];
overBg.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;

[bg addSubview:overBg];
cell.backgroundView = bg;

Ответ 4

Моим решением было добавить расширение для UIView или UITableViewCell.

extension UIView {

func addSeparator(ofHeight height : CGFloat) {
    let lineView = UIView()
    lineView.backgroundColor = .red
    self.addSubview(lineView)
    let constraintString = "V:|-\(self.frame.size.height - height)-[v0(\(height))]|"
    self.addConstraintsWithFormat("H:|[v0]|", views: lineView)
    self.addConstraintsWithFormat(constraintString, views: lineView)
}

//MARK: - Constraints Extension

func addConstraintsWithFormat(_ format: String, views: UIView...) {
    var viewsDictionary = [String: UIView]()
    for (index, view) in views.enumerated() {
        let key = "v\(index)"
        view.translatesAutoresizingMaskIntoConstraints = false
        viewsDictionary[key] = view
    }
    addConstraints(NSLayoutConstraint.constraints(withVisualFormat: format, options: NSLayoutFormatOptions(), metrics: nil, views: viewsDictionary))
} }

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

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
    self.addSeparator(ofHeight: 1)
}