Текст не будет отображаться с добавленными ограничениями

Итак, вот мой текущий код для 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)
Другие вопросы по тегам