如何在Swift中以编程方式设置UITableView单元格高度

时间:2016-09-02 01:43:57

标签: ios swift uitableview

如何以编程方式设置视图高度 我试过这段代码

cell.viewMain.frame = CGRectMake(cell.viewMain.frame.origin.x, cell.viewMain.frame.origin.y, cell.viewMain.frame.size.width, 65.0)

但这不起作用。

更新:

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 个答案:

答案 0 :(得分:5)

首先,rowHeight会更改表中所有行的高度。如果您想要特定行的特定高度,请实现tableView:heightForRowAtIndexPath:方法。首先删除代码中的tbUpdate.rowHeight。

答案 1 :(得分:3)

TableView单元格的高度由表格视图设置。

您需要实施UITableViewDelegate tableView:heightForRowAtIndexPath:

答案 2 :(得分:2)

您可以尝试使用autolayout创建高度constrait,然后将约束连接到插座。然后为该约束设置常量

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() 

将它放在你的cellForRowAtIndexPath

编辑:我误解了问题是在cellView中要求另一个视图,如果是这样,委托方法heightForRowAtIndexPath确实是正确的,如上面的答案中所述。

一个例子:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
{
    if x == 0{
        return 100.0 //Choose your custom row height
    } else {
        return 50
    }
}

答案 3 :(得分:1)

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
    }

答案 4 :(得分:0)

class Device(PolymorphicModel):
   .....

class Mobile(Device): 
   .....

class Computer(Device):
   .....