swift - 如果 9 行或更多行,UITextView 和 UILabel 不显示全文?
问题描述
我正在尝试各种方法、功能、扩展:这是我的问题。
我从后端 API 获得文本响应,它是单行文本,但会有用于换行的 HTML 标记。所以一些长字符串应该看起来像项目符号或多个段落。此外,我将不得不解析 URL 链接、电子邮件和电话号码,所以我想使用 UITextView
我的问题: textView 几乎从不显示超过几行,我必须上下滚动多次才能加载全文。有时圆角不圆。我特别需要3个圆角。
通常这很容易。但这严重难倒我。
我尝试将滚动设置为 false。我已经设置我的约束太多次了。
我不想乞求,但我很乐意将一些 KitKats 邮寄给任何可以提供帮助的人!
这是我的 cellForRowAt 和我的单元格类
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let message = self.messages[indexPath.row]
let sending = message.from?.id == BotClient.shared.currentUser.id
switch sending {
case true:
// User Cell
let cell = tableView.dequeueReusableCell(withIdentifier: "UserCell", for: indexPath) as! UserCell
cell.transform = tableView.transform
cell.messageLabel.text = message.text
return cell
case false:
// Bot Cell
let cell = tableView.dequeueReusableCell(withIdentifier: "BotCell", for: indexPath) as! BotCell
cell.testLabel.text = message.text
cell.testLabel.layoutIfNeeded()
cell.transform = tableView.transform
return cell
}
}
}
// Bot Cell Class
class ReadMoreCell : UITableViewCell, UITextViewDelegate {
@IBOutlet weak var testLabel: EdgeInsetLabel!
override func awakeFromNib() {
super.awakeFromNib()
let bounds: CGRect = testLabel.bounds
let maskPath = UIBezierPath(roundedRect: bounds, byRoundingCorners: ([.topLeft, .topRight, .bottomRight]), cornerRadii: CGSize(width: 15.0, height: 15.0))
let maskLayer = CAShapeLayer()
maskLayer.frame = bounds
maskLayer.path = maskPath.cgPath
testLabel.layer.mask = maskLayer
testLabel.layer.masksToBounds = true
}
override func layoutSubviews() {
super.layoutSubviews()
}
override func prepareForReuse() {
super.prepareForReuse()
}
}
// 用户单元类 class UserTableViewCell: UITableViewCell {
static let reuseId = "UserCell"
@IBOutlet weak var messageView: UIView!
@IBOutlet weak var messageLabel: EdgeInsetLabel!
override func awakeFromNib() {
super.awakeFromNib()
let bounds: CGRect = messageLabel.bounds
let maskPath = UIBezierPath(roundedRect: bounds, byRoundingCorners: ([.topLeft, .topRight, .bottomLeft]), cornerRadii: CGSize(width: 20.0, height: 20.0))
let maskLayer = CAShapeLayer()
maskLayer.frame = bounds
maskLayer.path = maskPath.cgPath
messageLabel.layer.mask = maskLayer
messageLabel.layer.masksToBounds = true
messageLabel.layoutIfNeeded()
}
override func layoutSubviews() {
super.layoutSubviews()
// Do I put UI Configurations like border colors, and round corner stuff here ??
}
}
解决方案
推荐阅读
- javascript - 使用扩展拉丁字母验证个人姓名的 REGEX 模式
- javascript - 这个应许会发生什么
- vba - Shell command is not executed
- python - 为什么 b'\x02' 与 Python 中的值 2 或 int(2) 不同?
- java - 使用向量汇编器(Java)在 Spark 中设置输入和输出的问题
- html - HTML-如何在浏览器中添加图标徽标
- linux - Docker从多个容器挂载到循环设备不工作只能挂载一个容器
- typo3 - Typo3 9.5 子类和外部表
- java - 当elasticsearch在单台服务器上时,是否需要为非常大的数据设置多个主分片?
- typescript - 如何制作一个使用全局类型但不使用它扩充项目的 NPM 包?