0

我的动画完成处理程序出现问题。我正在尝试调出一个 UILabel 来显示加载状态。状态在 In​​it() 方法中更新。

问题是标签(loadingLabel)出现在 Init() 的末尾而不是动画的末尾。

谢谢

这是我的代码:

AnimationManager.BounceAppear (
    this.logoImage, 
    duration: 0.5, 
    delay: 1,
    onFinished:
        () => {

        this.loadingLabel.Hidden = false;

        // Long Process which update loadingLabel
        Init (); 

        }
);

public static void BounceAppear(UIView view, double delay = 0.5, double duration = 0.3, Action onFinished = null)
{
    double interval = duration/ 2.0f;
    view.Transform = CGAffineTransform.MakeScale(0.001f, 0.001f);
    UIView.AnimationWillEnd += () => {

    };
    UIView.Animate(
        interval,
        delay,
        UIViewAnimationOptions.CurveLinear,
        ()=>
        {
        view.Transform = CGAffineTransform.MakeScale(1.1f, 1.1f);
        },
        ()=> 
        {
        UIView.Animate(
            interval,
            ()=> view.Transform = CGAffineTransform.MakeScale(0.9f,0.9f),
            ()=> 
            {
            UIView.Animate(
                interval,
                ()=> view.Transform = CGAffineTransform.MakeIdentity(),
                ()=> { if(onFinished != null){ onFinished(); }} );
        }
    );
    });
}
4

1 回答 1

0

正如您自己所说,Init() 是一个漫长的过程。因此,它会阻止 UI。

所以,确保 Init() 方法是异步运行的,你应该没问题。

于 2013-07-26T08:36:24.433 回答