2009-12-11 9 views
6

È possibile? Posso cambiare l'opacità e la posizione (al centro) del livello ma ogni volta che provo a cambiare la dimensione o l'origine, non funziona.Ridimensiona e sposta un UIView con Core Animation (CAKeyFrameAnimation)

CAAnimationGroup* anigroup = [CAAnimationGroup new]; 

    CGMutablePathRef thePath = CGPathCreateMutable(); 
    CGPathAddRect(thePath, NULL, CGRectMake(0,0, 320, 480)); 
    CGPathAddRect(thePath, NULL, CGRectMake(location.x - 16,location.y-24, 32, 48)); 
    CGPathAddRect(thePath, NULL, CGRectMake(190, 20, 32, 48)); 


    CAKeyframeAnimation* AniLoc = [CAKeyframeAnimation animationWithKeyPath:@"frame"]; 
    AniLoc.path = thePath; 
    AniLoc.keyTimes= [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0f], 
              [NSNumber numberWithFloat:0.3f], 
              [NSNumber numberWithFloat:1.0f],nil]; 
    AniLoc.duration = 5; 

    CFRelease(thePath); 

    anigroup.animations = [NSArray arrayWithObjects:AniLoc,nil]; 
    anigroup.duration = 5; 

    [focusview.layer addAnimation:anigroup forKey:nil]; 

risposta

10

È possibile sia modificare la dimensione e la posizione di una vista o strato in un'animazione, ma ti consigliamo di farlo come un gruppo di animazione, non con la creazione di un percorso da una serie di rettangoli.

Fornisco un esempio di un'animazione raggruppata che sposta una vista lungo un percorso riducendone l'opacità e riducendone l'opacità nella risposta here. Funziona usando un CAKeyframeAnimation per il percorso curvo seguito dalla visualizzazione (solo animando la sua posizione) e quindi utilizzando un'animazione di base per regolare le dimensioni dei limiti della vista. Puoi anche usare una CAKeyframeAnimazione lì, con più CGSize per ogni fotogramma chiave che desideri, assicurandoti di avvolgerli in un NSValue prima di posizionarli in un NSArray di fotogrammi chiave.

Per animare due proprietà contemporaneamente, avvolgo le due animazioni in un CAAnimationGroup e lo applico al livello della vista.

+0

Impressionante, questo è proprio quello che stavo cercando. Grazie! – ACBurk

Problemi correlati