Как изменить высоту разделителя в UITableView Swift 3?

Хотя уже есть несколько ответов на эту тему. Ни один из них не охватывает Swift 3, и они давно. Каков в настоящее время лучший способ изменить высоту разделителя в UITableView в Swift 3?

4 ответа

Решение

Обновлено для Swift 3:

Если вы хотите изменить высоту разделителя UITableView, используйте код ниже.
Вы должны добавить его в метод UITableViewCell awakeFromNib() чтобы избежать воссоздания.

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code

    let mScreenSize = UIScreen.main.bounds
    let mSeparatorHeight = CGFloat(3.0) // Change height of speatator as you want
    let mAddSeparator = UIView.init(frame: CGRect(x: 0, y: self.frame.size.height - mSeparatorHeight, width: mScreenSize.width, height: mSeparatorHeight))
    mAddSeparator.backgroundColor = UIColor.brown // Change backgroundColor of separator
    self.addSubview(mAddSeparator)
}

Это правильный способ сделать это.

Во-первых, в вашем ViewController вы должны установить (tableView.separatorStyle = .none)

import UIKit 

class ViewController: UIViewController {

@IBOutlet weak var tableView: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()

    tableView.delegate = self
    tableView.dataSource = self
    tableView.separatorStyle = .none
   }

}

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

class TableViewCell: UITableViewCell {

   override func layoutSubviews() {
      super.layoutSubviews()

      //Your separatorLineHeight with scalefactor 
      let separatorLineHeight: CGFloat = 1/UIScreen.main.scale

      let separator = UIView()

      separator.frame = CGRect(x: self.frame.origin.x, 
                               y: self.frame.size.height - separatorLineHeight,
                           width: self.frame.size.width,
                          height: separatorLineHeight)

      separator.backgroundColor = .black

      self.addSubview(separator)
   }

}

Наконец, у вас есть тонкая разделительная линия и, конечно, вы можете увеличить это значение, что вам нравится.

Для тех, кто хочет сделать это с помощью autolayout, вот код

var additionalSeparator:UIView = UIView()
override func awakeFromNib() {
        super.awakeFromNib()
        self.createSeparator()
    }
    func createSeparator() {

        self.additionalSeparator.translatesAutoresizingMaskIntoConstraints = false
        self.contentView.addSubview(self.additionalSeparator)
    }
    func setConstraintForSeparator() {
        self.additionalSeparator.leadingAnchor.constraint(equalTo: self.contentView.leadingAnchor, constant: self.separatorInset.left).isActive = true
        self.additionalSeparator.trailingAnchor.constraint(equalTo: self.contentView.trailingAnchor, constant: -self.separatorInset.right).isActive = true
        self.additionalSeparator.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor, constant: 0).isActive = true
        self.additionalSeparator.heightAnchor.constraint(equalToConstant: 1).isActive = true
        self.additionalSeparator.backgroundColor = UIColor.greyishBrown
    }

Попробуйте этот Swift 3:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: YOUR_CELL_IDENTIFIER, for: indexPath) as! yourTableViewCell

    let viewSeparatorLine = UIView(frame:CGRect(x: 0, y: cell.contentView.frame.size.height - 5.0, width: cell.contentView.frame.size.width, height: 5))
    viewSeparatorLine.backgroundColor = .red
    cell.contentView.addSubview(viewSeparatorLine)
    return cell
}
Другие вопросы по тегам