如何自动更改聊天气泡的大小?

时间:2018-03-17 10:00:21

标签: swift

我正在使用 Swift 3 。我已经把这个聊天泡泡了,但我希望它能改变尺寸......
例如,当有4行文本时,它不会改变大小(变大),我希望它自动完成。我该怎么办?

谢谢!

2 个答案:

答案 0 :(得分:1)

您需要在textview / label中添加约束

enter image description here

观察所选textview的限制,其顶部,底部,右侧,左侧和高度> = 30只有这将起作用

和tableview

tableview.estimatedRowHeight = 44.0
tableview.rowHeight = UITableViewAutomaticDimension

所以它会像这样工作

enter image description here

注意:上面的标签和日期有固定的高度。替代您可以使用拥有优先权的内容进行播放。

答案 1 :(得分:1)

试试这段代码。

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
  return estimateFrameForText(text: YourMessageText, width: 280).height + 32
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
  let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! TableViewCell
  bubbleViewWidthConstraint.constant = estimateFrameForText(text: YourMessageText, width: 280).width + 32
  return cell
}


private func estimateFrameForText(text: String, width: CGFloat) -> CGRect {
    let size = CGSize(width: width, height: 10000)
    let options = NSStringDrawingOptions.usesFontLeading.union(.usesLineFragmentOrigin)
    return NSString(string: text).boundingRect(with: size, options: options, attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 13)], context: nil)
}

您需要在此代码中设置字体,并将UI中的字体设置为相同。