如何让UIImageView blink/flash动画无限大?

How to make UIImageView blink/flash animation infinite?

我正在尝试在我的 iOS 应用程序中为 UIImageView 实现 blinking/flashing 效果并持续一段时间。我希望 UIImageView blink/flash 具有 alpha,而不是不同的图像。

我有另一个来自 android 应用程序的代码片段,它描述了我在 XCode Swift 中想要实现的目标。我在下面post它:

这是我目前在 XCode Swift:

中取得的成就
        ellipses.alpha=0.8
        ellipses.animationDuration=1
        ellipses.animationRepeatCount=0
        ellipses.startAnimating()

当然,它不起作用!我不太确定如何实现这一目标,并且很乐意获得一些指导。

下面这段代码是针对android,而不是针对Swift/Xcode(但它描述的我的目标很明确)

        Animation animation = new AlphaAnimation(1, 0); //to change visibility from visible to invisible
        animation.setDuration(1000); //1 second duration for each animation cycle
        animation.setInterpolator(new LinearInterpolator());
        animation.setRepeatCount(Animation.INFINITE); //repeating indefinitely
        animation.setRepeatMode(Animation.REVERSE); //animation will start from end point once ended.
        imageButton.startAnimation(animation); //to start animation

使用下面的代码来获得像眨眼一样的图像动画。

图像闪烁(使用图像视图hide/show):-

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(self.alarmAlertActivate), userInfo: nil, repeats: true)
    }

    @objc func alarmAlertActivate(){
        myImage.isHidden = !myImage.isHidden
    }

图像闪烁(使用图像视图 alpha):-

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        Timer.scheduledTimer(timeInterval: 0.7, target: self, selector: #selector(self.alarmAlertActivate), userInfo: nil, repeats: true)
    }

@objc func alarmAlertActivate(){
        UIView.animate(withDuration: 0.7) {
            self.alarmImage.alpha = self.alarmImage.alpha == 1.0 ? 0.0 : 1.0
        }
    }

您可以反复设置图像视图的不透明度动画。类似于:

UIView.animate(withDuration: 2.0,
                      delay: 0,
                    options: [.repeat, .autoreverse],
                 animations: { imageView.alpha = 0 }
              )

我想让我的按钮 blink/flash 突然,而不是像大多数 IOS 动画默认那样平滑地淡入淡出。上面接受的答案使用计时器来完成此操作,但您也可以设置常规动画制作器 class 来执行此操作 - 无需平滑。下面是一个闪烁按钮边框颜色的示例,但这可以用于任何需要相同效果的东西。

这里的技巧是使用“关键帧”动画,并将计算模式设置为“离散”:

    let color = CAKeyframeAnimation(keyPath: "borderColor")
    color.values = [CGColor.white, CGColor.black, CGColor.white]
    color.keyTimes = [0, 0.5, 1]
    color.duration = 1
    color.repeatCount = .infinity
    color.calculationMode = .discrete
    gotItButton.layer.borderWidth = 3
    gotItButton.layer.add(color, forKey: "")