Xamarin.ios monotouch可使图像在屏幕上移动

Xamarin.ios monotouch可使图像在屏幕上移动,xamarin.ios,Xamarin.ios,简单的要求,但证明棘手 下面的示例代码作为示例,我的最终目标是生成一个例程,使图像在给定的x坐标上反弹。 然而,目前我只是停留在第二次让它移动上。 下面的动画只发生一次,即无论“从”和“到”参数如何,我都无法使其上下移动。它在加载时只移动一次,即 private void LoadGetStarted() { UIImageView imageView = new UIImageView(); UIImage getStartedImage = n

简单的要求,但证明棘手

下面的示例代码作为示例,我的最终目标是生成一个例程,使图像在给定的x坐标上反弹。 然而,目前我只是停留在第二次让它移动上。 下面的动画只发生一次,即无论“从”和“到”参数如何,我都无法使其上下移动。它在加载时只移动一次,即

        private void LoadGetStarted() {
        UIImageView imageView = new UIImageView();
        UIImage getStartedImage = new UIImage("images/DownArrow.gif");
        float leftPos = 80f;
        RectangleF f2 = new RectangleF(leftPos,
                                            130f,
                                            200f,
                                            181f);
        imageView.Image = getStartedImage;
        imageView.Frame = f2;
        this.Add(imageView);

        Animate(imageView,"y",-100f,-200f);
        Animate(imageView,"y",-100f,200f);
        Animate(imageView,"y",10,100f);

    }

    private void Animate(UIImageView imageView,string type,float top, float bottom) {
        var theAnimation = CABasicAnimation.FromKeyPath("transform.translation."+type);
        theAnimation.Duration = 3;
        theAnimation.Speed = 2; 
        theAnimation.FillMode = CAFillMode.Both;
        theAnimation.From = NSNumber.FromFloat(top);
        theAnimation.To = NSNumber.FromFloat(bottom);
        theAnimation.RemovedOnCompletion = false;
        imageView.Layer.AddAnimation(theAnimation,"imageView");
    }

这是因为您正在将动画添加到为相同特性设置动画的层,而上一个动画尚未完成。 在上一个动画完成后,通过挂钩到
CABasicAnimation.AnimationStopped
事件,尝试添加下一个动画。不要忘记将
From
值设置为上一个
to
值,以便下一个动画在上一个动画完成的地方继续。
另外,将
RemovedOnCompletion
设置为
true
,这样就不会在

中堆叠不需要的已完成动画,这是因为您正在将动画添加到为相同属性设置动画的层,而上一个动画尚未完成。 在上一个动画完成后,通过挂钩到
CABasicAnimation.AnimationStopped
事件,尝试添加下一个动画。不要忘记将
From
值设置为上一个
to
值,以便下一个动画在上一个动画完成的地方继续。 另外,将
RemovedOnCompletion
设置为
true
,这样就不会在
层中堆叠不需要的已完成动画