Я пытаюсь создать ячейку, которая содержит квадратный UIImageView и UITextField.Если текст соответствует ширине экрана, то все работает нормально.Но как только я меняю текст на более длинный, презентация ломается.В консоли нет сообщений о правильности ограничений.
Когда текст в UITextField помещается на экране или UITextField содержит только заполнитель, все работает нормально.
Но если текст достаточно длинный, презентация разбивается.
Код, с помощью которого я создаюпредставление:
extension TextFieldWithImageTVCell {
private func initView() {
selectionStyle = .none
initImgView()
initTextField()
contentView.addSubview(imgView)
contentView.addSubview(textField)
// debug code
imgView.backgroundColor = UIColor.black
textField.backgroundColor = UIColor.blue
}
private func initImgView() {
imgView = UIImageView(frame: CGRect.zero)
imgView.translatesAutoresizingMaskIntoConstraints = false
}
private func initTextField() {
textField = UITextField(frame: CGRect.zero)
textField.translatesAutoresizingMaskIntoConstraints = false
textField.isUserInteractionEnabled = false
}
}
Код, с помощью которого я создаю ограничения:
extension TextFieldWithImageTVCell {
private func initConstraints() {
initConstraintsImgView()
initConstraintsTextField()
}
private func initConstraintsImgView() {
imgView.heightAnchor.constraint(equalTo: imgView.widthAnchor).isActive = true
let margins = contentView.layoutMarginsGuide
imgView.leadingAnchor.constraint(equalTo: margins.leadingAnchor).isActive = true
imgView.topAnchor.constraint(equalTo: margins.topAnchor).isActive = true
imgView.bottomAnchor.constraint(equalTo: margins.bottomAnchor).isActive = true
}
private func initConstraintsTextField() {
textField.leadingAnchor.constraint(equalTo: imgView.trailingAnchor, constant: 8).isActive = true
let margins = contentView.layoutMarginsGuide
textField.topAnchor.constraint(equalTo: margins.topAnchor).isActive = true
textField.trailingAnchor.constraint(equalTo: margins.trailingAnchor).isActive = true
textField.bottomAnchor.constraint(equalTo: margins.bottomAnchor).isActive = true
}
}
Часть кода, с которой я настраиваю ячейку:
cell.textContent = subject
cell.placeholder = "Предмет"
cell.isEditingEnabled = true
guard let textField = cell.textField else {
assertionFailure("error in ItemSubject::configureCellForRow")
return
}
textField.delegate = self
textField.clearButtonMode = .always
textField.adjustsFontSizeToFitWidth = true
textField.minimumFontSize = 10
Свойства ячейки:
extension TextFieldWithImageTVCell {
var placeholder: String? {
set { textField.placeholder = newValue }
get { return textField.placeholder }
}
var textContent: String? {
set { textField.text = newValue }
get { return textField.text }
}
var isEditingEnabled: Bool {
set { textField.isUserInteractionEnabled = newValue }
get { return textField.isUserInteractionEnabled }
}
}
Какие ограничения мне нужно добавить для достижения желаемого результата?Почему моих ограничений недостаточно?