У меня есть контроллер представления, чей вид содержит UIImageView
, который делает анимацию:
//AnimationViewController::ViewDidLoad event:
var ctlAnimations = new UIImageView();
ctlAnimations.AnimationImages = list.ToArray(); //<--list contains the UIImages
ctlAnimations.AnimationDuration = 1.0 * list.Count;
ctlAnimations.StartAnimating();
this.Add(ctlAnimations);
Это отлично работает: когда я нажимаю AnimationViewController
в стек навигации, он отображает и анимирует UIImage
.
Но теперь мне нужно показать AnimationViewController
с помощью настраиваемого анимированного перехода:
var transition = CATransition.CreateAnimation ();
transition.Duration = 0.3f;
transition.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseInEaseOut);
transition.Type = CATransition.TransitionFade;
this.View.Layer.AddAnimation (transition, "fade");
//viewController is being pushed with animated=false, because we have a custom animation
base.PushViewController (viewController, false);
this.View.Layer.RemoveAnimation("fade");
Этот также работает отлично, поскольку новые переходы View на место с использованием указанной пользовательской анимации.
Но когда я нажимаю AnimationViewController
на стек с помощью анимированного перехода, он отображает, но анимация не запускается. Вместо этого он показывает первый кадр анимации (первое изображение в списке) и не запускает его.
Итак, что-то о переходе нарушает способность анимировать a UIImage
в новом контроллере представления, но я просто не могу понять, что с этим делать.
Обновить. Я заметил, что если я коснусь кнопки назад навигационной кнопки ControlController, но затем откройте кнопку "Назад" и отпустите (так что я вообще не вернусь), начинается анимация играть!