如何更改 UITableView Swift 3 中的分隔符高度?

How to change separator height in UITableView Swift 3?

虽然已经有一些关于这个话题的答案。 None 其中覆盖了 Swift 3,它们来自很久以前。目前在 Swift 3 的 UITableView 中更改分隔符高度的最佳方法是什么?

试试这个 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
}

已更新 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 class 中,您应该创建一个 separatorView。 并且不要忘记为您的单元格继承 TableViewCell class。

class TableViewCell: UITableViewCell {
   let separator = UIView()

    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
    super.init(style: style, reuseIdentifier: reuseIdentifier)

    separator.backgroundColor = .black
    contentView.addSubview(separator)
}
   override func layoutSubviews() {
      super.layoutSubviews()

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

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

}

最后,您得到了一条细分隔线,当然,您可以根据需要增加此值。

对于那些想使用自动布局来做的人,这里是代码

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
    }