动态单元格高度在ios中使用约束以编程方式在swift中

时间:2015-01-16 07:23:03

标签: ios uitableview swift nslayoutconstraint uitableviewautomaticdimension

我正在开发一个swift项目,根据标签内容需要单元格大小是动态的,所以我搜索动态单元格高度,我找到了一些解决方案,但所有这些都包括使用故事板来分配约束。没有故事板就可以做到这一点。是否有可能以编程方式进行?我的意思是在没有故事板的情况下应用自我调整大小

我的代码是:

class a: UITableViewDelegate, UITableViewDataSource {
    tableView = UITableView(frame: CGRectMake(0, 0, self.view.frame.width, self.view.frame.height), style: UITableViewStyle.Plain)
    tableView.delegate = self
    tableView.dataSource = self
    tableView.estimatedRowHeight = 100
    tableView.rowHeight = UITableViewAutomaticDimension
    self.view.addSubview(tableView)
}

希望问题很明确。

提前致谢。

编辑:以下答案均无效

5 个答案:

答案 0 :(得分:1)

尝试这种方法。

 override func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath!) -> CGFloat {
 return // get cell text label high and return +10 or +20 height. what is label height..
}

答案 1 :(得分:1)

答案 2 :(得分:1)

您可以尝试此方法。

func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
{
 self.dashBoardTableView.rowHeight = UITableViewAutomaticDimension

    if (CellIdentifier == "dashBoardTableCellID")
    {
       dashBoardTableView.rowHeight =  96
    }
    else
    {
        dashBoardTableView.rowHeight =  60
    }

    return self.dashBoardTableView.rowHeight
}

答案 3 :(得分:0)

是的,您可以在代码中创建约束。 我建议你看看NSLayoutConstraint类:

NSLayoutConstraint Apple documentation

答案 4 :(得分:0)

iOS 8支持自定义的tableview单元格。要启用它,首先要使用正确的约束创建单元格。最终使用代码

tableView.estimatedRowHeight = 50
tableView.cellHeight = UITableViewCellAutomaticDimension

estimatedRowHeight只是提示tableview。当tableview重用单元格时,它会查看其内容并根据它调整大小。