2011-08-21 2 views
1

Mail.app a un petit volet d'activité dans le coin inférieur gauche qui se glisse lorsqu'il est activé. J'ai remarqué qu'il redimensionne la liste source au-dessus pendant l'animation (la barre de défilement se redimensionne simultanément).Taille de l'animation d'animation dans OS X

Comment cela peut-il être réalisé? Je n'ai pas trouvé de manière intégrée pour animer les cadres de vue de la même manière que pour Windows.

Répondre

2

Vous pouvez utiliser Core Animation. Un exemple de cadre changeant avec Core Animation est montré ici: http://www.macresearch.org/tutorial-intro-core-animation

Vous pouvez également utiliser NSViewAnimation pour faire l'animation, comme montré ici: http://www.cocoadev.com/index.pl?AnimatedNSSplitView

Une troisième voie est de faire vous-même en utilisant GCD:

CGFloat duration = 2; //animation duration (seconds) 

int N = 100; //animation fineness 
CGFloat dt = duration/N; //time change 

dispatch_async(dispatch_get_global_queue(0,0), ^{ 
    for (int i = 1; i <= N; i++) 
    { 
    NSDate *future = [NSDate dateWithTimeIntervalSinceNow:dt]; 
    [NSThread sleepUntilDate:future]; 

    //calculate your new frame/splitview setup 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     //apply the new frame/splitview setup 
    }); 
    } 
});