如何在自定义tableView单元格中调整标签高度和宽度

时间:2016-10-07 07:27:14

标签: ios swift uitableview uilabel

我有一个可扩展的tableView,当我展开一个部分时,比有三个单元格。在峡湾上,只有名字和第二个细胞。它有很大的内容。现在我想根据内容自动调整此标签的高度和宽度。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tblView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! CustomTableViewCell

        let dataArrayTblView = dataArrayForTableView
        let titleName = dataArrayTblView.valueForKey("name")
        let dueDate = dataArrayTblView.valueForKey("deadlinedate")
        let description = dataArrayTblView.valueForKey("description")

        cell.titleLabel.text = titleName[indexPath.row] as AnyObject! as! String!
        cell.dueDateLabel.text = dueDate[indexPath.row] as? String
        cell.descriptionLabel.text = description[indexPath.row] as? String

        cell.descriptionLabel.sizeToFit()


        cell.textLabel?.backgroundColor = UIColor.clearColor()
        cell.selectionStyle = .None
        return cell
    }

但未获得完整内容

enter image description here

4 个答案:

答案 0 :(得分:0)

尝试设置此项。它会自动调整行的高度。如果它不起作用,那么你的故事板中的约束就会出错。

grep *.xml '$' file1.txt > output

答案 1 :(得分:0)

使用heightForRowAtIndexPath方法调整行的高度。计算 此方法使用boundingRectWithSize的字符串大小。例如:

试试这个:

if let YOUR_STRING:NSString = str as NSString? {
let sizeOfString = ns_str.boundingRectWithSize(
                                 CGSizeMake(self.titleLabel.frame.size.width, CGFloat.infinity),options: NSStringDrawingOptions.UsesLineFragmentOrigin,   attributes: [NSFontAttributeName: lbl.font], context: nil).size
}

答案 2 :(得分:0)

您应该使用UITableViewAutomaticDimension作为行高,例如

  // this should be set in viewDidload
  tableView.rowHeight = UITableViewAutomaticDimension
  tableView.estimatedRowHeight = 140

为此您必须使用autolayout,并且应在单元格中为您的标签设置正确的constraints

约束应该是线性链,我的意思是你的标签的顶部和底部都必须设置约束,你的标签应该根据内容调整大小,这样你的单元格就会相应调整大小!

您可以参考Self-sizing Table View Cells by Raywenderlich

答案 3 :(得分:0)

将以下内容放入viewDidLoad并按照以下屏幕截图设置自动布局。

  tblview.rowHeight = UITableViewAutomaticDimension
  tblview.estimatedRowHeight = 44

Screenshot 1

Screenshot 2

Screenshot 3

Screenshot 4