首页 > 解决方案 > 如果 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 ??
}

}

图片:灰色单元格应该占据屏幕的整个长度

标签: swiftxcodeuitableview

解决方案


推荐阅读