我有一个静态UITableView
,有12行,11行我知道高度需要。
我有一个UILabel,其动态文本位于12行内,我如何根据UILabel中的文本创建一个单元格以获得动态高度。
我在viewDidLoad
内尝试了以下代码,但它没有用。行保持相同的高度。我还为UILabel
tableView.estimatedRowHeight = 100.0
tableView.rowHeight = UITableViewAutomaticDimension
答案 0 :(得分:10)
你试过这个吗?
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if (indexPath.row < 11) {
// Everything starts at 0, so this covers 0-10
// Whatever your cell height is
return <#fixedCellHeight#>
} else {
// This is your 12th cell (indexPath.row 11), as we start counting at 0
return UITableViewAutomaticDimension
}
}
答案 1 :(得分:2)
添加到@Adrian答案,如果您使用的是静态单元格,将一个单元格更改为动态高度,而将其他单元格改为动态高度,您可以将其编辑为此。
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if indexPath.row == 11 {
// This is your 12th cell (indexPath.row 11), as we start counting at 0
return UITableViewAutomaticDimension
} else {
return super.tableView(tableView, heightForRowAtIndexPath: indexPath)
}
}
答案 2 :(得分:1)
试试这个:
func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
答案 3 :(得分:0)
您可以为表格视图创建2个单元格原型单元格。你给他们2个不同的身份证。 然后在你的代码中覆盖这个功能
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = UITableViewCell()
if indexPath.row < 12 {
cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
} else {
cell = tableView.dequeueReusableCellWithIdentifier("cell12", forIndexPath: indexPath)
}
return cell
}
答案 4 :(得分:0)
您可以使用文本高度创建动态单元格,然后可以在表格视图中设置静态和动态单元格
以下是带有文本的动态单元格链接如何在UITableView静态单元格中动态更改单元格高度
答案 5 :(得分:0)
更优雅的可能就是按照建议实施:
func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
或在目标C中:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return UITableViewAutomaticDimension;
}
但是,不是行特定逻辑,而是在Storyboard中为静态单元格的内容添加约束,以保持行高不变。这样,如果您移动行或更改内容,则无需更改任何代码。