J'ai TableView
dans la MainstoryBoard
et le nombre de lignes est aléatoire à chaque fois. Je veux que la hauteur de TableView
entière soit flexible - par là, je veux dire, par exemple: si j'ai 4 rangées dans la TableView
et que chaque hauteur de rangée TableView
est 22, la hauteur de TableView
sera alors de 88.. exemple: nombre de lignes: 2 hauteur de ligne = 22 TableView
sera 44.
Comment puis-je le faire?
Vous pouvez modifier la hauteur UITableView en fonction de la taille du contenu comme ci-dessous:
Swift 2.2
tableView.frame = CGRectMake(tableView.frame.Origin.x, tableView.frame.Origin.y, tableView.frame.size.width, tableView.contentSize.height)
Swift 3 ou 4+
tableView.frame = CGRect(x: tableView.frame.Origin.x, y: tableView.frame.Origin.y, width: tableView.frame.size.width, height: tableView.contentSize.height)
et assurez-vous d'écrire la ligne ci-dessus dans la méthode viewDidAppear
Vous devez également écrire la ligne ci-dessus dans viewDidLayoutSubviews
.
Swift 2.2
func viewDidLayoutSubviews(){
tableView.frame = CGRectMake(tableView.frame.Origin.x, tableView.frame.Origin.y, tableView.frame.size.width, tableView.contentSize.height)
tableView.reloadData()
}
Swift 3 ou 4+
func viewDidLayoutSubviews(){
tableView.frame = CGRect(x: tableView.frame.Origin.x, y: tableView.frame.Origin.y, width: tableView.frame.size.width, height: tableView.contentSize.height)
tableView.reloadData()
}
Prendre en charge la contrainte de hauteur de la vue parente et lui attribuer la hauteur du contenu de la vue du tableau + constante (hauteur supplémentaire des autres contenus de la vue)
heightConstraintView.constant = tableView.contentSize.height + constantValue //use the value of constant as required.
et écrivez ce code dans la méthode cellForRowAt.
DispatchQueue.main.async {
var frame = tableView.frame
frame.size.height = tableView.contentSize.height
tableView.frame = frame
}
Utilisez ceci pour Swift 3
override func viewDidLayoutSubviews(){
tableView.frame = CGRect(x: tableView.frame.Origin.x, y: tableView.frame.Origin.y, width: tableView.frame.size.width, height: tableView.contentSize.height)
tableView.reloadData()
}