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