2009-12-19 8 views
2

Voici mon code:fading dans une vue pour une autre

- (IBAction)showTaskDetailView:(id)sender { 
    [window setContentView:viewTaskView]; 
} 

Comment pourrais-je disparaître la vue actuelle et disparaître dans la vue détaillée?

Répondre

1

Ne pas modifier l'affichage du contenu; mettre les deux vues dans le même point de vue du contenu, et utiliser NSViewAnimation à disparaître un et l'autre dans

+0

Pouvez-vous fournir un exemple de code? – nanochrome

+0

La documentation devrait être tout ce dont vous avez besoin. Vous allez initier l'animation avec deux dictionnaires: l'un a sa cible fixée à la vue pour disparaître et l'effet défini pour l'éteindre; l'autre a sa cible définie à la vue de fondre, et l'effet défini pour le fondre. N'oubliez pas de regarder dans la super-classe, NSAnimation, pour plus de méthodes (par exemple, pour définir la durée de l'animation). –

1

Exemple de code here (retouché légèrement).

- (void)crossFadeWithOld:(NSView *)oldView andNew:(NSView *)newView 
{ 
    [window setContentView:newView]; 

    NSDictionary *oldFadeOut = nil; 
    if (oldView != nil) { 
     oldFadeOut = [NSDictionary dictionaryWithObjectsAndKeys: 
         oldView, NSViewAnimationTargetKey, 
         NSViewAnimationFadeOutEffect, 
         NSViewAnimationEffectKey, nil]; 
    } 
    NSDictionary *newFadeIn; 
    newFadeIn = [NSDictionary dictionaryWithObjectsAndKeys: 
       newView, NSViewAnimationTargetKey, 
       NSViewAnimationFadeInEffect, 
       NSViewAnimationEffectKey, nil]; 

    NSArray *animations; 
    animations = [NSArray arrayWithObjects: 
        newFadeIn, oldFadeOut, nil]; 

    NSViewAnimation *animation; 
    animation = [[NSViewAnimation alloc] 
       initWithViewAnimations: animations]; 

    [animation setAnimationBlockingMode: NSAnimationBlocking]; 
    [animation setDuration: 0.5]; // or however long you want it for 

    [animation startAnimation]; // because it's blocking, once it returns, we're done 

    [animation release];  

} 
Questions connexes