Установите приоритет сопротивления вертикальной компрессии на 749 для UITableViewCell - PullRequest
0 голосов
/ 28 февраля 2019

enter image description here Я работаю над созданием ячейки табличного представления, которая имеет следующие отношения ограничений.

    -----------------
    |                |
    |  ____________  |
    |  |          |  |
    |  |__________|  |
    |                |
    |  ____________  |
    |  |label.    |  |
    |  |__________|  |
    |                |
    |  ____________  |
    |  |          |  |
    |  |__________|  |
    |                |
    |  ____________  |
    |  |label.    |  |
    |  |__________|  |
    |________________|

Подвиды следующие: (вид, метка, вид, метка).Я хочу, чтобы ячейка динамически изменяла размеры с двумя метками, например, если первая метка становится выше, то ячейка должна соответственно стать выше.Если обе метки становятся выше или короче, размер ячейки должен соответственно измениться.Два вида должны иметь постоянную ширину и высоту.

Если я начну с метки, я в порядке, с меткой и представлением, я в порядке, с меткой и меткой, у меня все в порядке, но если у меня будет 2 метки и представление, как толькотак как я накладываю последнее ограничение на конечную метку, автоматическое расположение вызывает ошибку в раскадровке (у меня нет видимых проблем при запуске приложения)

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

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Измените нижнее ограничение последнего ярлыка на константу с отношением «Больше или равно»

Ваш код должен выглядеть следующим образом:

enter image description here enter image description here

Надеюсь, что это работает

0 голосов
/ 28 февраля 2019

Кажется, что вы правильно установили ограничения, ошибка на раскадровках показывает даже незначительное изменение ограничений, например 0,5 пикселя.Вы можете удалить нижние ограничения последних UILabel и переназначить их, чтобы можно было переставить конфликтующие ограничения.Это решит эту проблему.

Чтобы получить динамический размер ячейки:

  1. Установите число строк для обоих UILabel в 0.

  2. Обновить отношение ограничений высоты обоих UILabel с = до >=

  3. Применить следующий метод делегата таблицы в вашем коде

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return UITableViewAutomaticDimension
    }
    

Используйте UIStackView для решения проблемы:

Вместо того, чтобы добавлять ограничения ко всем представлениям, вы можете использовать все представления.в представлении стека и просто назначьте верхнее, нижнее, ведущее и конечное ограничение для представления стека и сохраните метод делегата таблицы.Я думаю, что это будет более подходящим способом.

...