Как изменить высоту разделителя в 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
}