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

时间:2017-06-23 01:16:11

标签: ios swift uitableview swift3 list-separator

虽然这个主题已经有一些答案了。它们都不包括Swift 3,它们是很久以前的。目前在Swift 3中更改UITableView中分隔符高度的最佳方法是什么?

4 个答案:

答案 0 :(得分:2)

针对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)
}

答案 1 :(得分:0)

这是一种正确的方法。

首先,在你的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类中,您应该创建一个separatorView。 并且不要忘记为您的单元继承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)
   }

}

最后,你有一个很薄的分隔线,当然,你可以增加这个值你喜欢什么。

答案 2 :(得分:0)

对于那些想要使用自动布局的人来说,代码是

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
    }

答案 3 :(得分:-3)

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