按时间间隔重复功能?

时间:2016-03-28 07:52:58

标签: ios swift function animation

我有一个功能可以使我视图中的图像来回“摇动”。我可以设定我想要它摇动的速度和速度,但我真正需要的是每10秒钟摇一摇。

这是我正在使用的函数,只需在viewDidLoad中调用一次即可使其工作一次。

    func shakeView(){

    let shake:CABasicAnimation = CABasicAnimation(keyPath: "position")
    shake.duration = 0.4
    shake.repeatCount = 5
    shake.autoreverses = true
    shake.speed = 9.0

    let from_point:CGPoint = CGPointMake(homeLogo.center.x - 5, homeLogo.center.y)
    let from_value:NSValue = NSValue(CGPoint: from_point)

    let to_point:CGPoint = CGPointMake(homeLogo.center.x + 5, homeLogo.center.y)
    let to_value:NSValue = NSValue(CGPoint: to_point)

    shake.fromValue = from_value
    shake.toValue = to_value
    homeLogo.layer.addAnimation(shake, forKey: "position")
}

我没有幸运地发现我怎么能做到这一点。任何帮助或指向正确的方向将不胜感激。

4 个答案:

答案 0 :(得分:2)

您需要使用NSTimer。使用以下代码:

override func viewDidLoad() {
    super.viewDidLoad()
    var helloWorldTimer = NSTimer.scheduledTimerWithTimeInterval(10.0, target: self, selector: Selector("shakeView"), userInfo: nil, repeats: true)
} 

答案 1 :(得分:1)

使用计时器。

[NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(functionName)userInfo:nil repeats:YES];

答案 2 :(得分:1)

查看此文档:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSTimer_Class/

有一个名为scheduledTimerWithTimeInterval的函数可以在您指定的每个时间间隔执行一个选择器

在swift中:How can I use NSTimer in Swift?

示例:

override func viewDidLoad() {
    super.viewDidLoad()
    //Swift 2.2 selector syntax
    var timer = NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: #selector(MyClass.update), userInfo: nil, repeats: true)
    //Swift <2.2 selector syntax
    var timer = NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: "update", userInfo: nil, repeats: true)
}

答案 3 :(得分:1)

您无法将该要求添加到动画中,您可以创建具有所需时段的NSTimer并使用它来触发每个新动画。

您可以将动画和计时器代码移动到自定义图像视图类中,以便它可以提供良好的开始和停止动画界面,然后您的视图控制器不需要通过计时器管理代码复杂化(如果您是同时有多个动画图像视图)。