У меня есть messageTextView
в другом UIView
, называемом messageView
. Первоначально обе высоты ограничений равны 50
(задается в UIStoryBoard
). Цель состоит в том, чтобы увеличить их высоту до 100.
Поэтому, когда пользователь вводит текст в messageTextView
, его высота должна соответствовать на основе введенного текста, увеличивайте высоту messageView
в соответствии с высотой messageTextView
, НО до 100 точек.
Когда пользователь удаляет текст, высота обоих представлений должна уменьшаться в зависимости от размера содержимого.
На основании моего текущего кода высота увеличивается, но она превышает предел в 100 пунктов.
@IBOutlet weak var messageView: UIView!
@IBOutlet weak var messageViewHeightConstraint: NSLayoutConstraint!
@IBOutlet weak var messageTextView: UITextView!
@IBOutlet weak var messageTextViewHeightConstraint: NSLayoutConstraint!
extension MessageLogVC : UITextViewDelegate {
func textViewDidChange(_ textView: UITextView) {
let width = messageView.frame.width - attachImageView.frame.width - sendImageView.frame.width
let size = CGSize(width: width, height: 100)
let estimateSize = textView.sizeThatFits(size)
if messageViewHeightConstraint.constant < estimateSize.height {
messageViewHeightConstraint.constant = estimateSize.height
messageTextViewHeightConstraint.constant = estimateSize.height
}
if messageViewHeightConstraint.constant > estimateSize.height {
messageViewHeightConstraint.constant = 50
messageTextViewHeightConstraint.constant = 50
}
}
}
Другая проблема, которую я вижу, - это странное поведение (из-за отсутствия лучшего слова), которое я вижу, когда вы начинаете удалять текст. Не уверен, как это исправить: