使用 NSTimer。这就是我要做的(伪代码):
timer = new scheduledTimer(0.5 seconds) selector:flicker() repeats:YES;
timeSpent = 0;
flicker()
{
timeSpent+= 5;
switch(seconds)
case 5: alpha = 1.0; break;
case 15: alpha = 0.0; break;
...
case 120: alpha = 1.0; [timer invalidate]; break;
}
如果你对闪烁有一些模式,你可以做出比长开关更好的东西,也许只是有类似的东西if (timeSpent % 5 == 0) { alpha = 1.0; } else { alpha = 0.0; }
编辑:这样的事情怎么样:
CAKeyframeAnimation* animation = [CAKeyframeAnimation animationWithKeyPath: @"opacity"];
animation.duration = 0.7f;
animation.values = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:1.0f],
[NSNumber numberWithFloat:1.0f],
[NSNumber numberWithFloat:0.0f],
[NSNumber numberWithFloat:0.0f],
[NSNumber numberWithFloat:1.0f],
[NSNumber numberWithFloat:1.0f],
[NSNumber numberWithFloat:0.0f],
[NSNumber numberWithFloat:0.0f],
[NSNumber numberWithFloat:1.0f],
[NSNumber numberWithFloat:1.0f],
[NSNumber numberWithFloat:0.0f],
[NSNumber numberWithFloat:0.0f],
[NSNumber numberWithFloat:1.0f],
nil];
animation.keyTimes = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:0.1f],
[NSNumber numberWithFloat:0.2f],
[NSNumber numberWithFloat:0.2f],
[NSNumber numberWithFloat:0.3f],
[NSNumber numberWithFloat:0.3f],
[NSNumber numberWithFloat:0.4f],
[NSNumber numberWithFloat:0.4f],
[NSNumber numberWithFloat:0.5f],
[NSNumber numberWithFloat:0.5f],
[NSNumber numberWithFloat:0.6f],
[NSNumber numberWithFloat:0.6f],
[NSNumber numberWithFloat:0.7f],
[NSNumber numberWithFloat:0.7f],
nil];
[self.view.layer addAnimation:animation forKey:nil];