web-dev-qa-db-fra.com

Comment définir par programme la hauteur de cellule UITableView dans Swift

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
}
5
Rahmat Hidayat

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.

5

La hauteur des cellules TableView est définie par la vue Table.

Vous devez implémenter UITableViewDelegate tableView:heightForRowAtIndexPath: .

3
i_am_jorf

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
    }
}
2
Zayne ZH
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
    }
1
Vishal Vaghasiya
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
}
0
Beetroot