如何在按下停止按钮之前为闪烁的UIView设置动画?

时间:2017-07-24 22:58:13

标签: ios objective-c animation uiview

我试图让UIView闪光灯呈现某种颜色,直到按下停止按钮。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

看看UIView的动画方法。具体来看看UIView和变体等方法。带有选项的变体就是您想要的。有重复和/或自动反转动画的选项。

编辑:

实际上,如果您希望颜色闪烁而不是颜色之间的交叉淡入淡出,那么使用UIView动画可能不是最佳选择。这将导致颜色之间的平滑过渡。

如果您希望颜色从一种颜色闪烁到下一种颜色,最好使用计时器并简单地设置背景颜色。

我创建了一个animateColor的简单自定义子类,它有一个变量public class LiveView: UIView { //Adjust this interval value if desired to get a different flash interval. //Note that changing the interval will have no effect while the timer is running. public var interval = 0.5 //Change the array of colors if you want different colors public var backgroundColors = [UIColor.gray, UIColor.green, UIColor.blue, UIColor.red] var colorIndex = 0 //Set this flag to true to animate between the colors. Set it to false to stop the animation. public var animateColor: Bool = false { didSet { if animateColor { colorTimer = Timer.scheduledTimer(withTimeInterval: interval, repeats: true, block: { timer in self.colorIndex = (self.colorIndex + 1) % self.backgroundColors.count self.setColor() }) } else { colorTimer?.invalidate() } } } private weak var colorTimer: Timer? func setColor() { backgroundColor = backgroundColors[colorIndex] } public required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) setColor() } public override init(frame: CGRect) { super.init(frame: frame) setColor() } } 。将其设置为true,它会创建一个循环显示背景颜色数组的计时器。如果您希望它在颜色之间来回循环,请使用2种颜色。如果需要,可以使用更多。

{{1}}