2011-08-21 2 views
1

Mail.app имеет небольшую область действия в нижнем левом углу, которая скользит во время активации. Я заметил, что он повторно измеряет исходный список над ним во время анимации (одновременно изменяется полоса прокрутки).Размер анимационного вида в OS X

Как это можно достичь? Я не нашел встроенный способ анимации рамок представления так же, как вы можете сделать для окон.

ответ

2

Вы можете использовать Core Animation. Пример кадра меняющегося с Core Animation показано здесь: http://www.macresearch.org/tutorial-intro-core-animation

Вы также можете использовать NSViewAnimation сделать анимацию, как показано здесь: http://www.cocoadev.com/index.pl?AnimatedNSSplitView

Третий способ сделать это самостоятельно, используя НОД:

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 
    }); 
    } 
}); 
Смежные вопросы