调整 UITableViewCell 高度

Posted

技术标签:

【中文标题】调整 UITableViewCell 高度【英文标题】:Resizing UITableViewCell height 【发布时间】:2015-02-13 05:58:08 【问题描述】:

我在调整.toDoListTable 中单元格.rowHeight 的大小时遇到​​了非常困难的情况。从UITextfield 收到的字符串在每行的末尾被截断。 我在设置原型单元格时没有添加标签,因为我的字符串是从一个 UITextField 附加的。我的代码如下:

override func viewDidLoad() 
    super.viewDidLoad()


        toDoListTable.estimatedRowHeight = 45.0

        toDoListTable.rowHeight = UITableViewAutomaticDimension


    


然而,我的文字仍然被截断。有什么建议么?另外,我的代码在正确的位置吗?

我希望我的内容适应 UITextField 提供的文本量。

编辑:通过添加 cell.textLabel?.numberOfLines = 0 解决了问题。

【问题讨论】:

删除这两行并试试这个self.toDoListTable.rowHeight = 45 我试过了,它对我没有任何作用。我想要做的不是让内容在行尾被截断,而是下拉到下一行。我希望我的单元格根据里面的内容调整大小。 【参考方案1】:

使用它来设置行的高度:

override func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath!) -> CGFloat
    
         return 50 //your height
    

文档:

https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UITableViewDelegate_Protocol/index.html

【讨论】:

不是为表格行设置永久大小,有没有办法根据里面的内容来改变它们?例如,如果在一行上显示太长,它将下降到下一行。 我想最好的方法是与填充 tableview 的方式相同(使用数组)。例如:你在 myDataArray[indexPath.Row].someValue.length 的基础上返回,你用 if 语句来做:如果 .length > 30 返回 someValue,否则 returnSomethingElse,或者你只是返回 (myDataArray[indexPath.Row]. someValue.length * 乘数)【参考方案2】:
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
    return 30 // height you want to set.

【讨论】:

这对我不起作用。我想根据 UITextField 中的内容调整它们的大小。如果内容太多,我希望它下拉到下一行并调整表格单元格的大小,而不是在行尾将其截断。【参考方案3】:

我知道我迟到了,但我想正确回答我自己的问题。

我只是在cellForRowAtIndexPath 函数中添加了:cell.textLabel?.numberOfLines = 0,以允许多行不受限制的文本。

【讨论】:

以上是关于调整 UITableViewCell 高度的主要内容,如果未能解决你的问题,请参考以下文章

根据子视图高度调整 UITableViewCell(从 xib 创建)高度

根据内容自动调整 UITableViewCell 高度

如何让 UITableViewCell 调整高度以适应其内容?

调整 UITableViewCell 高度

下载图像时 UITableViewCell 高度调整大小

确保每个自定义 UITableViewCell 调整单元格高度?