我有一个功能可以使我视图中的图像来回“摇动”。我可以设定我想要它摇动的速度和速度,但我真正需要的是每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")
}
我没有幸运地发现我怎么能做到这一点。任何帮助或指向正确的方向将不胜感激。
答案 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)
有一个名为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
并使用它来触发每个新动画。
您可以将动画和计时器代码移动到自定义图像视图类中,以便它可以提供良好的开始和停止动画界面,然后您的视图控制器不需要通过计时器管理代码复杂化(如果您是同时有多个动画图像视图)。