2017-01-12 13 views
0

Я пытаюсь сделать два разных состояния для UITableViewCell, но когда я изменяю размер ячейки, это изменение прерывает множество ограничений AutoLayout. Эти два состояния:Два состояния в ограничениях на разрыв UITableViewCell и AutoLayout

enter image description here

enter image description here

  • Желтый клетка
  • Серый обычай UIView
  • Оранжевый другой UIView внутри A
  • Красный являются два UILabel внутри B

Исходное состояние раскладывают но когда я уменьшить height в строке, чтобы перейти в сложенном состоянии, много ограничений (в основном UIView B и UILabels) перерыв AutoLayout

шагов:

  1. CliC на клетку , и изменить размер ячейки
  2. Скрыть UIView B
  3. Обновить UITableView

Есть ли какой-либо способ или подход, чтобы не нарушать ограничения? Может быть, два разных дизайна ячейки?

Спасибо!

+0

вам нужно будет включать ограничения, которые вы имеете на те объекты, для нас, чтобы помочь вам –

+0

Вы не можете просто изменить размер ячейки. UITableView необходимо перезагрузить Data, а затем вы можете его изменить, например. – mattsson

+0

@MSU_Bulldog Я обновил изображения с ограничениями – mhergon

ответ

1

Лучшим решением в вашем случае будет использование двух ячеек с разными идентификаторами - один, содержащий вид A, другой, содержащий виды A, B. Тогда вы могли бы .dequeueReusableCell(withIdentifier: %CELL_A_OR_CELL_B_IDENTIFIER%, for: indexPath) в зависимости от ваших потребностей.

Менее подходящее решение - использовать представление стека или настроить ограничения. В обоих случаях единственный способ избежать конфликтов и предотвратить неправильный макет - правильно установить приоритеты ограничений. Я хотел бы попытаться установить ограничение в приоритете круг что-то менее 1000 (как 990)

enter image description here

+0

Спасибо, работает отлично! – mhergon