我无法让这个CA动画工作

时间:2017-05-01 22:43:48

标签: ios swift core-animation uiviewanimation

我试图制作一个动画,其中红色脉冲在屏幕上,当点击屏幕时,脉冲的速度会增加。现在我有两个问题。一个是动画没有出现,第二个是动画必须加速而不重新开始动画。我想让动画从点击屏幕时的任何一点加速。

public class Animal 
{ 
    public virtual void Jump()
    {   
        Console.WriteLine("Jump.");
    }               
}

public class Animal<T> : Animal where T : AnimalDefinition
{
     public override void Jump() 
     {
        //you can override Jump here if you want to
     }
}

public class Dog : Animal<DogDefinition>  {}
public class Cat : Animal<CatDefinition>  {}

2 个答案:

答案 0 :(得分:0)

我第一次没有仔细阅读这篇文章。

你在核心动画和UIView动画方面有一个奇怪的组合。这两者存在于不同层面。核心动画将允许您为视图上的属性设置动画(例如它的背景颜色)。

UIView动画构建于Core Animation之上,通过构建基础Core动画,可以更轻松地自动为视图更改设置动画。

您在创建CABasicAnimation时开始使用Core Animation,但是您有一个函数pulseAnimation,它看起来正在使用UIVIew动画执行某些操作。我认为你可以完全摆脱这个功能。

当您添加CABasicAnimation时,您告诉它更改图层&#34;不透明度&#34;的值。您可能想要的是&#34;不透明度&#34; (小写)。

您的动画正在应用于您已创建的新CALayer ......但您似乎无法将该图层放入视图中(因此从未绘制过)。更可能的是你应该做的是将动画附加到视图的图层,只允许该图层使其颜色变为动画。

要将一个图层添加到另一个图层,请使用addSublayer(https://developer.apple.com/reference/quartzcore/calayer/1410833-addsublayer)。您的代码中的视图图层应该以self.view.layer的形式提供,但您可能必须在viewWillAppear而不是viewDidLoad中使用它

答案 1 :(得分:0)

您需要在设置动画

之前将红色imageview的alpha设置为0.0
 func pulseAnimation(pulseSpeed: Double) {


    UIView.animate(withDuration: pulseSpeed, delay: 1.0,
                   options: [UIViewAnimationOptions.repeat, UIViewAnimationOptions.autoreverse],
                   animations: {
                    self.red.alpha = 0.5
                    self.red.alpha = 1.0
    }
    )
}

override func viewDidAppear(_ animated: Bool) {

    self.red.alpha = 0.0


    counter.center = CGPoint(x: 185, y: 118)


}