Я решил тот же тип проблемы несколько недель назад, Вы можете попробовать это -
сначала пользовательские ячейки и использовать авто макет, такой, что ячейка является самостоятельной калибровкой i.е определяет его размер в соответствии с его содержанием, вы можете воспользоваться помощью этой ссылки http://useyourloaf.com/blog/self-sizing-table-view-cells.html
(Добавление этих ограничений было бы легче, если вы будете добавлять в коде)
Основная идея заключается в том, чтобы добавить ограничения для расширенного состояния и сокращенное состояние и хранить их в массиве.
Расширенное состояние - нормальное состояние, как показано на рисунке. Добавьте необходимые ограничения и хранить их в массиве сказать constraintsForExpansionOfView
сжатого состояния - В этом состоянии также все соображения будут присутствовать, но все мнения, которые бы контракт будут двигаться к верхней части электролизера с альфа = 0 т.е. заразились просмотры будут быть скрытым, но будет там сверху и не будет мешать определению размера ячейки. При добавлении этих ограничений для сокращенного состояния отключить их с помощью
constraint.active = false
хранить Также эти ограничения в отдельном массиве сказать constraintsForContractionOfView
Таким образом, первоначально ваш constraintsForExpansion будет применяться, как мы havn't деактивируется их при добавлении.
И заключительный шаг - когда вы хотите просматривать сжиматься под анимационным блоком с некоторой длительностью записью следующего кода -
for constraint in constraintsForContractionOfView {
constraint.active = true
}
for constraint in constraintsForExpansionOfView {
constraint.active = false
}
Под анимационного блоком также изменить альфа взглядов, которые вы хотите заключить контракт на 0, как
someview.alpha = 0
и в то время как снова Расширяя ваш взгляд просто делать противоположное в анимации блока т.е. теперь активировать ваш constraintsForExpansionOfView и деактивировать constraintsForCo ntractionOfView и изменить альфа всех скрытых просмотров на 1.