代码之家  ›  专栏  ›  技术社区  ›  beta Rob

通过使UI元素闪烁来指示错误

  •  0
  • beta Rob  · 技术社区  · 7 年前

    我目前尝试使用该元素( self.display 在下面的代码中)快速闪烁两次如下:

    @IBAction func inactiveButtonClick() {
        let period = 0.16
    
        UIView.animate(withDuration: period/2, delay: 0.0, options: [.curveEaseInOut, .autoreverse, .repeat], animations: {
            self.display.alpha = 0
        }, completion: { _ -> Void in
            self.display.alpha = 1
        })
    
        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + period*2, execute: {
            self.display.layer.removeAllAnimations()
        })
    
    }
    

    这很有效 相当地 嗯,但感觉不是百分之百正确,而且动画有时在完成之前会被截断几分之一秒。我想我可以排队两个动画,但我想知道是否有一个更容易的方法来完成这一点。有没有内置的方式让UI元素闪烁以指示错误?如果没有,是否有任何曲线和频率的“已知良好”组合将其传达给用户?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Ladislav    7 年前

    关键帧动画似乎非常适合这种场景:

    UIView.animateKeyframes(withDuration: period, delay: 0.0, options: [], animations: {
        UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 0.5, animations: {
            self.display.alpha = 0
        });
        UIView.addKeyframe(withRelativeStartTime: 0.5, relativeDuration: 0.5, animations: {
            self.display.alpha = 1
        });
    }, completion: nil);
    

    因此,首先我们添加从开始开始的动画,其相对持续时间是总动画持续时间的0.5,即1/2。第二个动画将在第一个动画以总动画的1/2结束时开始,并在剩余的1/2动画时间内继续。

    希望这有帮助

    推荐文章