Iphone 使用CALayer设置UILabel不透明度的动画?

Iphone 使用CALayer设置UILabel不透明度的动画?,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,我正在为UILabel的alpha设置动画,以便在按下按钮时它会闪烁白色。标签是纯白色的[r255,g255,b255,a1]为了实现闪光,我正在将CALayer不透明度从0.5设置为1.0,然后再设置为0.5。执行此操作的代码:(感谢您的帮助)是: 由于flash被多次调用(即每次按下按钮),我在下一次flash之前调用removeAnimationForKey,我的问题是,这是否正确(即从层中移除动画的位)。如果我没有移除图层,我是否正确地假设随着我添加越来越多的图层,它们将不断累积 //

我正在为UILabel的alpha设置动画,以便在按下按钮时它会闪烁白色。标签是纯白色的[r255,g255,b255,a1]为了实现闪光,我正在将CALayer不透明度从0.5设置为1.0,然后再设置为0.5。执行此操作的代码:(感谢您的帮助)是:

由于flash被多次调用(即每次按下按钮),我在下一次flash之前调用
removeAnimationForKey
,我的问题是,这是否正确(即从层中移除动画的位)。如果我没有移除图层,我是否正确地假设随着我添加越来越多的图层,它们将不断累积

// REMOVE ANIMATION OBJECT
if([[self navTitle] tag] == 1138) {
    [[[self navTitle] layer] removeAnimationForKey:@"flash"];
    [[self navTitle] setTag:0];
}
NB:最初的想法是做一个恒定的脉冲(在NSTimer上),但在测试单个脉冲时,会在UI上查看lot cleaner

编辑:
如果您试图为不存在的密钥调用removeAnimationForKey会发生什么情况,目前我正在检查UILabel标记,然后再执行删除操作,是否需要执行此操作?

我认为无论如何,这并没有错,可能是框架以自己的方式执行此操作,但手动执行此操作不会对它造成伤害,只要addAnimation方法是带有removeAnimation的pair方法…

您不使用动画块的原因是什么?自动翻转、重复一次并设置UIVIEW的alpha动画我没有使用animateWithDuration,因为我找不到从0.5到1.0再回到0.5的动画设置方法。您可能认为自动翻转可以工作,但不幸的是,它仅与UIViewAnimationOptionRepeat一起工作。使用CABasicAnimation自动反转获取和初始值,设置动画到另一个,然后自动反转回原始,不会重复。
// ADD ANIMATION OBJECT
CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"opacity"];
[anim setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[anim setFromValue:[NSNumber numberWithFloat:0.5]];
[anim setToValue:[NSNumber numberWithFloat:1.0]];
[anim setAutoreverses:YES];
[anim setDuration:0.5];
[[[self navTitle] layer] addAnimation:anim forKey:@"flash"];
[[self navTitle] setTag:1138];
// REMOVE ANIMATION OBJECT
if([[self navTitle] tag] == 1138) {
    [[[self navTitle] layer] removeAnimationForKey:@"flash"];
    [[self navTitle] setTag:0];
}