我有一个视图控制器,它的视图包含一个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");
这也很有效,因为新视图使用指定的自定义动画过渡到位。
但是当我使用动画过渡AnimationViewController
推入堆栈时,它会显示但动画不会运行。相反,它显示动画的第一帧(列表中的第一个图像),并且不运行它。
因此,关于过渡的某些事情破坏了在新视图控制器中为 a 设置动画的能力UIImage
,但我根本不知道该怎么做。
更新:我注意到如果我点击 NavigationController 的后退按钮,然后离开后退按钮并松开(所以我实际上并没有返回),动画开始播放!