У меня есть контроллер в раскадровке, состоящий из двух видов контейнеров. Я установил вертикальное расстояние между двумя контейнерами до нуля.Мерцание при использовании layoutIfNeeded on containserview
Я хочу изменить ограничение высоты одного из контейнеров во время выполнения.
Вот код для изменения ограничения:
[UIView animateWithDuration:kAnimationDuration animations:^{
self.offeringContainerHeightConstraint.constant = [SJDataManager shared].offeringItems.count * kOfferingCellHeight + kOfferingHeaderHeight;
[self.view layoutIfNeeded];
}];
Проблема в том, что другой вид контейнера движется перед таким образом имеется пустое пространство между двумя контейнерами, пока анимация не завершится.
Я хочу, чтобы два вида контейнера изменяли их значение ограничения в синхронизации, чтобы это мерцание можно было удалить.
Я думаю (но не уверен), что animateWithDuration выполняется на фоновом потоке, а layoutIfNeeded должен выполняться в основном потоке. Что произойдет, если вы инкапсулируете его так: dispatch_get_main_queue(),^{[self.view layoutIfNeeded];}); – Teddy
Это приводит к тому, что вся анимация возникает сразу, что выглядит очень плохо. – Santosh
Я думал, что это ваше намерение извините. Но исчезло ли мерцание? – Teddy