Как я могу остановить ограничения «размера контента» при добавлении UILabel в качестве подпредставления к UITextView с программными ограничениями - PullRequest
0 голосов
/ 13 мая 2019

У меня есть UIVIew метод расширения

func addSubviewWithConstrainedBounds(subview:UIView) {
    subview.translatesAutoresizingMaskIntoConstraints = false
    self.addSubview(subview)
    NSLayoutConstraint.activate([
        subview.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 0),
        subview.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: 0),
        subview.topAnchor.constraint(equalTo: self.topAnchor, constant: 0),
        subview.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: 0),
    ])
}

Идея состоит в том, что я могу программно добавить представление в другое, где я буду использовать автоматическое расположение, чтобы сопоставить границы подпредставления с суперпредставлением

Когда я вызываю это, чтобы добавить мой subview в UIView суперпредставление, оно работает

Однако, когда я пытаюсь добавить свой subview в суперпредставление UITextView, subview настаивает на получении некоторых ограничений width и height из "размера контента". Как вы можете видеть, мои конечные и нижние ограничения игнорируются (в консоли также нет исключений)

enter image description here

Для сравнения, вот ограничения времени выполнения, когда я добавил UILabel в UIView вместо UITextView

enter image description here

Возможно, мне здесь не хватает имущества? что-то, что мне нужно установить? или это просто излишняя попытка добавить подпредставление к UITextView?

1 Ответ

1 голос
/ 14 мая 2019

Причиной такого поведения является то, что UITextView является UIScrollView. Это означает, что если ваше подпредставление не имеет высоты / ширины, ваш макет является неоднозначным, поэтому механизм компоновки добавляет собственный размер для решения этой проблемы.

Это зависит от того, как или где вы хотите расположить свое подпредставление в текстовом представлении, в этом случае вам нужно быть более точным в отношении выравнивания. Проверьте варианты приоритета содержимого, если это вам поможет.

Но, в конце концов, я думаю, что вам лучше не добавлять метку в качестве подпредставления, если вы можете использовать функции TextKit для стилизации и размещения содержимого вашей запланированной метки внутри вашего текстового представления.

...