Comment définir la hauteur de vue par programme J'ai essayé ce code
cell.viewMain.frame = CGRectMake(cell.viewMain.frame.Origin.x, cell.viewMain.frame.Origin.y, cell.viewMain.frame.size.width, 65.0)
Mais ça ne marche pas.
METTRE À JOUR :
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("updateCell", forIndexPath: indexPath) as! UpdateCell
if self.data[indexPath.row] == "b" {
tbUpdate.rowHeight = 85
cell.viewMain.frame = CGRectMake(cell.viewMain.frame.Origin.x, cell.viewMain.frame.Origin.y, cell.viewMain.frame.size.width, 65.0)
}else{
tbUpdate.rowHeight = 220
cell.viewMain.frame = CGRectMake(cell.viewMain.frame.Origin.x, cell.viewMain.frame.Origin.y, cell.viewMain.frame.size.width, 200.0)
}
return cell
}
tout d'abord, rowHeight modifie la hauteur de toutes les lignes de votre table. si vous souhaitez une hauteur spécifique pour des lignes spécifiques, implémentez la méthode tableView:heightForRowAtIndexPath:
. Supprimez d'abord tbUpdate.rowHeight dans votre code.
La hauteur des cellules TableView est définie par la vue Table.
Vous devez implémenter UITableViewDelegate tableView:heightForRowAtIndexPath:
.
Vous pouvez essayer d'utiliser autolayout pour créer une constrait de hauteur, puis connectez la contrainte à un point de vente. Puis définissez la constante pour cette contrainte,
var y: Float
if x==0{ //some condition
y = 10
}else if x==1{ //some condition
y = 20
}
cell.viewMainHeightConstraint.constant = y
cell.view.layoutIfNeeded()
Mettez ceci dans votre cellForRowAtIndexPath
Edit: j’ai mal interprété la question comme demandant une autre vue dans cellView. Si tel est le cas, la méthode déléguée heightForRowAtIndexPath est bien correcte, comme indiqué dans la réponse ci-dessus.
Un exemple:
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
{
if x == 0{
return 100.0 //Choose your custom row height
} else {
return 50
}
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
var height:CGFloat = CGFloat()
if indexPath.row == 0 {
height = 80
}
else if indexPath.row == 1 {
height = self.view.frame.size.height - 44 - 64 // 44 is a tab bar height and 64 is navigationbar height.
print(height)
}
return height
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
var cellHeight:CGFloat = CGFloat()
if indexPath.row % 2 == 0 {
cellHeight = 20
}
else if indexPath.row % 2 != 0 {
cellHeight = 50
}
return cellHeight
}