Antes de este código, mi película pic alfa se establece en 0,

CABasicAnimation* fadein= [CABasicAnimation animationWithKeyPath:@"alpha"];
    [fadein setToValue:[NSNumber numberWithFloat:1.0]];
    [fadein setDuration:0.5];
    [[moviepic layer]addAnimation:fadein forKey:@"alpha"];

No pasó nada, si puedo configurar el alfa de 0.5 de antemano en su lugar, el alfa se mantiene en el 0,5 y no animar a 1.

He visto un código mediante el uso de UIView beginAnimations: alrededor, pero yo estoy enseñando core animation así que me preguntaba por qué CABasicAnimation no puede hacer tarea simple como esto?

InformationsquelleAutor 5argon | 2011-09-23

3 Comentarios

  1. 98
    [CABasicAnimation animationWithKeyPath:@"opacity"];

    UIView expone esta como alpha donde como CALayer expone esta como opacity.

    • Lo O_o voy a tratar de esto pronto. Pero es que hay más casos como este? Y donde puedo comprobar que lo puedo usar para la ruta de acceso clave? (normalmente, me gustaría comprobar en la propiedad del objeto que ha setAlpha en ti, pero en este caso no coincide…)
    • Con Núcleo de Animación que está animando CALayer propiedades, no UIView propiedades, por lo que la capa es el lugar para buscar nombres de propiedad correcto – ver: view.layer.
  2. 1

    Para Swift:

    let opacity = CABasicAnimation(keyPath: "opacity")
    opacity.fromValue = fromValue
    opacity.toValue = toValue
    opacity.duration = duration
    opacity.beginTime = CACurrentMediaTime() + beginTime  //If a delay is needed
    
    view.layer.add(opacity, forKey: nil)

    Si quieres mantener la final alpha valor, usted tiene que fijar la vista actual del controlador como el delegado de la opacidad de animación:

    opacity.delegate = self

    Y, en el delegado de la función animationDidStop, usted debe hacer:

    extension ViewController: CAAnimationDelegate {
    
        func animationDidStop(_ anim: CAAnimation, finished flag: Bool) {   
            view.alpha = toValue
        }
    }

Dejar respuesta

Please enter your comment!
Please enter your name here