Я пробую различные методы, функции, расширения: вот моя проблема.
Я получаю текстовый ответ от бэкэнд-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()
}
}
// Класс ячейки пользователя
Класс 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 ??
}
} * * тысяча двадцать-один
image: СЕРЫЙ элемент должен занимать всю длину экрана