如何让LineBreakMode在UITableViewCell中工作? iOS - Swift

时间:2016-06-15 00:42:36

标签: ios xcode swift

我的tableviewcells里面有一个标题和一个正文。我正试图让身体包裹,但我有问题。

这是我在视图控制器中使用的代码

import UIKit

class mainCell: UITableViewCell {

@IBOutlet weak var mainHeader: UILabel!
@IBOutlet weak var mainBody: UILabel!


override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
}

func configureCell (text:String) {
    mainHeader.text = text
    mainBody.text = text

}


}

我搜索并认为numberOfLines = 0和lineBreakMode = NSLineBreakMode可以工作,但显然不是。

很抱歉,如果这很简单,请提前感谢。

@Daven

我知道这可能无济于事,但我不认为我有这个或者如果我这样做我不确定它是什么。还更新了我的VC中的所有内容的原始代码,但是vars

我的自定义单元格

sudo -u user command

2 个答案:

答案 0 :(得分:1)

假设您希望在文本长于一行时扩展单元格,则需要使用委托函数将单元格高度设置为自动:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

并使用

设置估计的行高
func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return currentInfoSelectorOption.rowHeight + 100
}

然后在单元格中使用autolayout来设置高度。您可以通过将单元格的顶部和底部距离约束设置为标签作为常量值并将标签行数设置为0来实现此目的。这应该允许标签展开并用它推动单元格

答案 1 :(得分:1)

为了让你的细胞随着标签的增长而扩展,你需要确保你做了一些事情。将tableView的{​​{1}}设置为值,例如

estimatedRowHeight

或通过这种方法:

tableView.estimatedRowHeight = 200.0;
tableView.rowHeight = UITableViewAutomaticDimension

您也可以选择使用此方法,但如果所有单元格的高度不同,则没有必要:

func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return 200.00
}

您可能还会发现this tutorial有用(这是我用过的:))。它显示了您的自动布局约束应该是什么样子。有关自我调整单元格的更多信息也是here