2017-07-01 4 views
1

J'ai créé un contrôleur de vue de table dont la vue chronologique se termine par la cellule qui contient du contenu. enter image description here Comme vous pouvez le voir sur l'image, la ligne verticale de la table se termine dans la deuxième rangée de vue de table puisqu'elle tire deux listes du tableau mais je veux montrer la ligne verticale jusqu'au fond et le cercle dans le inutilisé cellule de vue de table. J'ai créé la vue par programmation. La cellule de vue de table personnalisée ressemble àcréer une vue chronologique qui couvre toute la vue de table

private func setUpTimeline(){ 

     addSubview(bezierLine) 

     bezierLine.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 92.5).isActive = true 
     bezierLine.topAnchor.constraint(equalTo: self.topAnchor).isActive = true 
     bezierLine.widthAnchor.constraint(equalToConstant: 0.8).isActive = true 
     bezierLine.bottomAnchor.constraint(equalTo: self.bottomAnchor).isActive = true 


     addSubview(circularCompletion) 

     circularCompletion.leftAnchor.constraint(equalTo: self.bezierLine.leftAnchor, constant: -12.5).isActive = true 
     circularCompletion.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true 
     circularCompletion.widthAnchor.constraint(equalToConstant: 25).isActive = true 
     circularCompletion.heightAnchor.constraint(equalToConstant: 25).isActive = true 


     addSubview(timeLabel) 
     timeLabel.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true 
     timeLabel.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 8).isActive = true 
     timeLabel.rightAnchor.constraint(equalTo: self.bezierLine.leftAnchor).isActive = true 
     timeLabel.heightAnchor.constraint(equalToConstant: 30).isActive = true 


     addSubview(surveyNameLabel) 
     surveyNameLabel.leftAnchor.constraint(equalTo: self.bezierLine.rightAnchor, constant: 18).isActive = true 
     surveyNameLabel.topAnchor.constraint(equalTo: self.circularCompletion.topAnchor).isActive = true 
     surveyNameLabel.rightAnchor.constraint(equalTo: self.rightAnchor).isActive = true 
     surveyNameLabel.heightAnchor.constraint(equalToConstant: 20).isActive = true 

     addSubview(surveyDetailsLabel) 
     surveyDetailsLabel.leftAnchor.constraint(equalTo: self.surveyNameLabel.leftAnchor).isActive = true 
     surveyDetailsLabel.topAnchor.constraint(equalTo: self.surveyNameLabel.bottomAnchor, constant: 8).isActive = true 
     surveyDetailsLabel.rightAnchor.constraint(equalTo: self.surveyNameLabel.rightAnchor).isActive = true 
     surveyDetailsLabel.heightAnchor.constraint(equalToConstant: 15).isActive = true 
    } 
+0

Qu'en est-il de mettre cette ligne dans le footerView pour le reste? – Larme

Répondre

0

C'était en fait assez facile. J'ai créé une classe qui s'étend de UIView, et se conforme à la source de données Tableview, délégué. Créé ce bloc,

lazy var table: UITableView = { 
     var bounds = UIScreen.main.bounds 
     let tv = UITableView(frame:CGRect(x: 0, y: 0, width: bounds.width, height: 800)) 
     tv.backgroundColor = UIColor.red 
     tv.separatorColor = UIColor.clear 
     tv.dataSource = self 
     tv.delegate = self 
     return tv 
    }() 

ensuite enregistré la cellule personnalisée,

override init(frame: CGRect) { 
     super.init(frame: frame) 
     addSubview(table) 

     table.register(EmptyTableViewCells.self, forCellReuseIdentifier: cellId) 
    } 

Dans le contrôleur principal de vue, j'ai créé une instance de la classe appelée « surveyFooter » et ajouté à tableFooterView.

self.tableView.tableFooterView = surveyFooter