Внутри диспетчера представлений меню боковой панели (на основе SWRevealViewController) я использую две таблицы для имитации двух столбцов. Поэтому, когда пользователь нажимает на опцию с дополнительными опциями, другой контроллер табличного представления загружает их. (См изображение)Анимация UITableView Width Constraint
Теперь проблема заключается в том, что не все опции в первой таблице на самом деле имеет подопции. Таким образом, мне нужно анимировать первую таблицу (таблица с основными опциями), поэтому она должна иметь полную ширину супервизора , когда нет подпозиций для отображения с другой стороны. Только нажатие на опцию, которая имеет подпараметры, должна анимировать ширину, чтобы оба столбца отображались бок о бок. (См Images)
(Слева: Целевое поведение, справа: Текущее поведение)
Логика для отображения дополнительных параметров и перезагрузки таблицы сделаны, и это работает прекрасно. Единственная проблема, с которой я сталкиваюсь, - это анимация. Чтобы оживить ширину таблицы, я подумал о настройке автоматической компоновки для ярлыков внутри ячеек следующим образом: H:|-8-Label-8-|, V:|-8-Label-8-|
и для обеих таблиц: H:|LeftTable(LeftTableWidth)-0-RightTable|
с созданием розетки для ограничения LeftTableWidth
. Поэтому, когда мне нужно, чтобы оживить их, я это сделать:
[self.view layoutIfNeeded]; self.subTableWidthConstraint.constant = width; [UITableView animateWithDuration:0.45f animations:^{ [self.view layoutIfNeeded]; }];
Теперь ширины таблиц становятся правильно анимированные. Однако метки внутри ячеек не анимируются от начальных значений ширины до конечных значений. Вместо этого их новые значения сразу же устанавливаются, когда изменяется ограничение (до того, как таблицы завершат их анимацию). Я даже попытался удалить все, кроме:
self.subTableWidthConstraint.constant = width;
и они до сих пор получить их новые значения, даже не называют [self.view updateConstraints]
.
Итак ... какие-нибудь подсказки, что я сделал не так? Спасибо всем!
К сожалению, такое же поведение по-прежнему происходит. Собственно, все, что я добавляю после «self.subTableWidthConstraint.constant = width», не имеет никакого эффекта для моей проблемы. Эта строка сама по себе применяет это изменение сразу для ярлыков ячеек. Кстати, мы используем ТОЧНЫЕ одинаковые имена переменных! XD – Mamouneyya