Jos*_*ank 10 iphone xamarin.ios ios
我有一个视图控制器,其视图包含一个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);
Run Code Online (Sandbox Code Playgroud)
这非常有效:当我按下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");
Run Code Online (Sandbox Code Playgroud)
这也很有效,因为新视图使用指定的自定义动画转换到位.
但是当我使用动画过渡AnimationViewController进入堆栈时,它会显示,但动画不会运行.相反,它显示动画的第一帧(列表中的第一个图像),并且不运行它.
因此,关于转换的一些事情正在破坏UIImage在新视图控制器中设置动画的能力,但我根本无法弄清楚如何处理它.
更新:我注意到如果我点击NavigationController的后退按钮,然后离开后退按钮放开(所以我实际上不回去),动画开始播放!
好吧,我从来没有弄清楚问题出在哪里,但事实证明存在某种内存泄漏,UIImage导致在某些手机上我的代码崩溃了。
所以我重写了它来手动制作动画。现在我设置了一个计时器并保留了一个帧索引变量,每次计时器响起时我都会自己更改图像。这相当于同一件事,而且事实证明它解决了这个问题。
| 归档时间: |
|
| 查看次数: |
1045 次 |
| 最近记录: |