У меня есть серия сцен в раскадровке, в которой есть CAShapeLayers, сгенерированные SVGKit из простых файлов SVG, которые я написал.Каждая сцена имеет UIViewController, который имеет переменную экземпляра, которая выбирает файл и устанавливает некоторые значения в SVG и применяет анимацию к CALayer для круга, который указывает, что я хочу, чтобы пользователь сделал (извините, фоновое изображение не рендеритсяправильно в разметке):
У меня есть сцены в отдельной раскадровке и есть массив NSStrings, которые содержат идентификаторы каждого из контроллеров в UIPageViewController.Я могу перемещаться от одного контроллера к другому, и почти все работает, как и ожидалось, за исключением анимации пульсирующей кнопки в любом контроллере, кроме второго.На самом деле пульсирующая кнопка видна во время перехода;он исчезает, когда переход завершается: Ссылка на быстрый фильм
У меня есть пользовательское представление, которое обрабатывает представление пульсирующей кнопки:
@implementation AlarisSVGView
-(void) layoutSubviews {
buttonImage = [SVGKImage imageNamed:@"buttons.svg"];
buttonView = [[SVGKLayeredImageView alloc] initWithSVGKImage:buttonImage];
[self addSubview: buttonView];
buttonLayer =[[buttonView.image dictionaryOfLayers] valueForKey:activeButton];
[buttonLayer addAnimation:glowAnim forKey:@"lineWidth"];
}
-(void) animateButton {
[buttonLayer removeAllAnimations];
[buttonLayer addAnimation:glowAnim forKey:@"lineWidth"];
}
Я попытался вызвать animateButton allманера путей:
- с задержкой
[self performSelector:@selector(animateButton) withObject:nil afterDelay:0.1];
Из ViewDidDisplay в контроллере представления
- (void)viewDidAppear {
[_alarisView animateButton];
}
Из didFinishAnimating на странице ViewController
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray<AlarisViewController *> *)previousViewControllers transitionCompleted:(BOOL)completed {
if (completed) {
AlarisViewController* myVC = (AlarisViewController*) pageViewController.viewControllers.firstObject;
[myVC.alarisView animateButton];
}
}
Первый и второй контроллеры не нуждаются в animateButton для отображения анимации, но ничего из того, что я пробовал, не вызовет показ любого контроллера, кроме # 2ButtonLayer, даже статически.Я посмотрел на [buttonLayer debugDescription], и было понятно, пульсирует ли кнопка или нет.Я посмотрел, есть ли делегат, который забит UIPageViewController.Я попытался добавить анимацию как на презентационный, так и на модельный слои.Я пробовал в симуляторе и на моем телефоне (iOS 12.2 для обоих).У меня кончается ум.Улики?