Текст не будет отображаться с добавленными ограничениями
Итак, вот мой текущий код для viewdidload и func view установки
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(bearImageView)
view.addSubview(descriptionText)
view.addSubview(startButton)
setupView()
}
@objc private func start() {
}
private func setupView() {
bearImageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
bearImageView.topAnchor.constraint(equalTo: view.topAnchor, constant: 100).isActive = true
bearImageView.widthAnchor.constraint(equalToConstant: 200).isActive = true
bearImageView.heightAnchor.constraint(equalToConstant: 250).isActive = true
descriptionText.topAnchor.constraint(equalTo: bearImageView.bottomAnchor, constant: 10).isActive = true
descriptionText.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
descriptionText.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
startButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
startButton.topAnchor.constraint(equalTo: descriptionText.bottomAnchor, constant: 140).isActive = true
startButton.widthAnchor.constraint(equalToConstant: 80).isActive = true
startButton.heightAnchor.constraint(equalToConstant: 40).isActive = true
}
Ограничения bearimage и button работают нормально (минус переворачивание телефона по горизонтали, но позже я это исправлю), однако текст просто отказывается показывать. Текст сделан программно для истины. Пусть descriptionText = UITextView = {...}() и т. Д. У кого-нибудь из вас есть идеи?
2 ответа
Если вы посмотрите внимательно, вы пропустили ограничение высоты для вашего UITextView. Если вы используете UILabel или UITextField, им не нужно ограничение высоты, и они могут рассчитать их высоту на основе своего внутреннего содержимого, но UITextView не будет этого делать, потому что начнет прокручивать, если содержимое больше его высоты, и это почему он не может установить высоту, основываясь на его внутреннем содержимом, а его высота равна нулю по умолчанию.
добавьте Height Constraint к вашему UITextView.
// This will fix your problem
descriptionText.heightAnchor.constraint(equalToConstant: 120).isActive = true
Возможно, размер внутреннего содержимого изображения настолько велик, что он расширяется, так что для свободного места больше нет места. descriptionText
этикетка. Попытайтесь обновить приоритет стойкости к сжатию содержимого метки до необходимого, чтобы он не сжимался при просмотре изображения.
Свифт 3:
descriptionText.setContentCompressionResistancePriority(UILayoutPriorityRequired, for: .vertical)
Свифт 4:
descriptionText.setContentCompressionResistancePriority(.required, for: .vertical)