我正在使用 Swift 3 。我已经把这个聊天泡泡了,但我希望它能改变尺寸......
例如,当有4行文本时,它不会改变大小(变大),我希望它自动完成。我该怎么办?
谢谢!
答案 0 :(得分:1)
您需要在textview / label中添加约束
观察所选textview的限制,其顶部,底部,右侧,左侧和高度> = 30只有这将起作用
和tableview
tableview.estimatedRowHeight = 44.0
tableview.rowHeight = UITableViewAutomaticDimension
所以它会像这样工作
注意:上面的标签和日期有固定的高度。替代您可以使用拥有优先权的内容进行播放。
答案 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中的字体设置为相同。