2016-03-28 204 views
0

我有一个功能,使我的视图中的图像“摇”来回。我可以设定我想让它震动多久,速度如何,但我真正需要的是每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") 
} 

我还没有找到我如何能够做到这一点。任何帮助或指向正确的方向将不胜感激。

回答

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) 
} 
1

为此使用计时器。

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

1

您不会将该要求添加到动画中,您会创建一个NSTimer,并用它来触发每个新的动画。

您可以将动画和计时器代码移动到自定义图像视图类,以便它可以呈现一个很好的开始和停止动画界面,然后您的视图控制器不需要由计时器管理代码变得复杂(如果你是同时具有多个动画图像视图)。

2

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

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