Здесь моя конфигурация:
У меня есть раскадровка с ListViewController. В ListViewController есть подзаголовок UIView, называемый EmptyListView. EmptyListView отображается только в том случае, если в UITableView нет элементов, иначе он скрыт.
У EmptyListView есть subview UIImageView с именем emptyListViewArrow, который визуально указывает на кнопку, чтобы создать новую запись в моем UITableView. Эта стрелка анимируется бесконечно вверх и вниз.
Я слушаю, как EmptyListView отправляет уведомление, когда он закончил выкладывать его в виде subviews. Я делаю это, потому что если нет, анимации, которые мутируют ограничения, ведут себя некорректно.
- (void) layoutSubviews {
[super layoutSubviews];
[[NSNotificationCenter defaultCenter] postNotificationName:@"EmptyViewDidLayoutSubviews" object:nil];
}
Когда ListViewController наблюдает это уведомление, он начинает анимацию:
[UIView animateWithDuration:0.8f delay:0.0f options:(UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse) animations:^{
self.emptyListViewArrowVerticalSpace.constant = 15.0f;
[emptyListView layoutIfNeeded];
} completion:nil];
Если я положил приложение в фоновом режиме или нажал другой ViewController в стеке, как только я вернусь в приложение или ListViewController, анимация остановится/приостановлена. Я не могу заставить его начать снова.
Я пробовал:
- Прослушивание приложения будет отменено/станет активным. Когда я ушел в отставку, я сделал [self.view.layer removeAllAnimations], а затем попытался снова запустить анимацию, используя вышеприведенный код.
- Удаление анимации UIImageView и добавление ее обратно в родительское представление, а затем попытка запустить анимацию.
Я сожалею об использовании ограничений здесь, но хотел бы получить представление о том, что может быть проблемой.
Спасибо!