【发布时间】:2019-06-28 11:19:49
【问题描述】:
我正在构建一个带有类似信使的界面的应用程序。
我使用 tableView 来完成此操作。每个单元格包含一个 UIView - 消息气泡和一个 UILabel - 嵌套在 UIView 中的消息。
它适用于小尺寸的文本,但由于某种原因,当 UILabel 应该换行时,它不会,并且全部都在一行中。行数设置为零。
这是我的消息处理类:
func commonInit() {
print(MessageView.frame.height)
MessageView.clipsToBounds = true
MessageView.layer.cornerRadius = 15
myCellLabel.numberOfLines = 0
let bubbleSize = CGSize(width: self.myCellLabel.frame.width + 28, height: self.myCellLabel.frame.height + 20)
print(bubbleSize.height)
MessageView.frame = CGRect(x: self.frame.origin.x, y: self.frame.origin.y, width: bubbleSize.width, height: bubbleSize.height)
if reuseIdentifier! == "Request" {
MessageView.layer.maskedCorners = [.layerMaxXMinYCorner, .layerMinXMinYCorner, .layerMinXMaxYCorner]
MessageView.backgroundColor = UIColor(red: 0, green: 122/255, blue: 1.0, alpha: 1.0)
} else {
MessageView.layer.maskedCorners = [.layerMaxXMinYCorner, .layerMinXMinYCorner, .layerMaxXMaxYCorner]
MessageView.backgroundColor = UIColor.lightGray
}
}
单元格调用函数:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if queryCounter % 2 == 0 && indexPath.row % 2 == 0{
cellReuseIdentifier = "Answer"
} else {
cellReuseIdentifier = "Request"
}
let cell:MessageCell = self.tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier) as! MessageCell
cell.myCellLabel.textColor = UIColor.white
cell.myCellLabel.text = self.messages[indexPath.row]
let height = cell.myCellLabel.text!.height(withConstrainedWidth: cell.myCellLabel.frame.width, font: cell.myCellLabel.font)
print(height)
cell.contentView.transform = CGAffineTransform(scaleX: 1, y: -1)
return cell
}
高度变量是根据文本大小计算的。它表明文本大小是正常计算的 - 考虑换行符。
我无法根据此计算修改单元格高度 - 我没有尝试过任何工作。
我认为这可能是一个约束问题。
我的约束:
我如何使线条中断?请帮忙。
编辑:我只是注意到MessageView.frame = CGRect(x: self.frame.origin.x, y: self.frame.origin.y, width: bubbleSize.width, height: bubbleSize.height) 对消息气泡没有任何影响。
【问题讨论】:
-
lineBreakMode怎么样?myCellLabel.lineBreakMode = .byCharWrapping -
我在故事板中添加了它。
-
将其添加到代码中也不起作用:/
-
确保您没有在情节提要中为您的 UILable 设置高度限制。
-
@HastiRanjkesh 高度未设置。
标签: ios swift uitableview uilabel