ios objective-c uibutton cabasicanimation

ios - Animar el color de fondo de UIButton de WhiteColor a RedColor



objective-c cabasicanimation (2)

UIButton crear un tipo de efecto de pulso de color que anima el color de fondo de un UIButton para hacer que cambie continuamente de un color (WhiteColor) a otro (RedColor). CABasicAnimation utilizar CABasicAnimation para cambiar CABasicAnimation pero no puedo hacer que funcione con color también.

CABasicAnimation *theAnimation; theAnimation=[CABasicAnimation animationWithKeyPath:@"opacity"]; theAnimation.duration=1.0; theAnimation.repeatCount=HUGE_VALF; theAnimation.autoreverses=YES; theAnimation.fromValue=[NSNumber numberWithFloat:1.0]; theAnimation.toValue=[NSNumber numberWithFloat:0.0]; [BigButton.layer addAnimation:theAnimation forKey:@"animateOpacity"];

Cada sugerencia sería apreciada. Gracias


Encontré el camino correcto. Debe recordar acerca de CGColor. Este fue mi error. El compilador no ayudó aquí.

C objetivo

CABasicAnimation *theAnimation=[CABasicAnimation animationWithKeyPath:@"backgroundColor"]; theAnimation.duration=1.0; theAnimation.repeatCount=HUGE_VALF; theAnimation.autoreverses=YES; theAnimation.fromValue= [[UIColor redColor] CGColor]; theAnimation.toValue= [[UIColor blueColor] CGColor]; [BigButton.layer addAnimation:theAnimation forKey:@"ColorPulse"];

Rápido

let colorAnimation = CABasicAnimation(keyPath: "backgroundColor") colorAnimation.fromValue = UIColor.redColor().CGColor colorAnimation.toValue = UIColor.blueColor().CGColor colorAnimation.duration = 1 colorAnimation.autoreverses = true colorAnimation.repeatCount = FLT_MAX self.layer.addAnimation(colorAnimation, forKey: "ColorPulse")


Finalmente descubrí la solución: realicé una animación de dos cuadros en la que primero cambié el color de fondo a Rojo y en el segundo marco lo puse de color blanco. También puedo manipular duraciones relativas

[UIView animateKeyframesWithDuration:2.0 delay:0.0 options:UIViewKeyframeAnimationOptionAutoreverse | UIViewKeyframeAnimationOptionRepeat animations:^{ [UIView addKeyframeWithRelativeStartTime:0.0 relativeDuration:0.5 animations:^{ someView.backgroundColor = [UIColor redColor]; }]; [UIView addKeyframeWithRelativeStartTime:0.5 relativeDuration:0.5 animations:^{ someView.backgroundColor = [UIColor whiteColor]; }]; } completion:nil];