Как сделать анимацию в стиле UIView при разработке приложений Cocoa / Mac - PullRequest
7 голосов
/ 29 октября 2011

Я делаю переход от программирования iPhone к родным приложениям Mac.Одна часть, которую я пропускаю, - это простота анимационной системы UIView.

У меня было два следующих метода для подкласса UIView:

-(void) hide{
    _isHidden=YES;
    [UIView commitAnimations];
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationDuration:0.5];  
    self.alpha = 0;
    [UIView commitAnimations];
}
-(void) show{
    _isHidden=NO;
    [UIView commitAnimations];
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationDuration:0.5];  
    self.alpha = 1;
    [UIView commitAnimations];    
}

Теперь я не уверен, как это сделать в Какао.Я попробовал следующее, но я не уверен, что это работает как следует.

-(void) hide{
    [[_myView animator] setAlpha:0];
}

Я вызываю эту функцию (скрывать) несколько раз, иногда, когда функция затухания все еще работает.

Ответы [ 2 ]

18 голосов
/ 29 октября 2011

Это должно привести к тому же результату, что и ваш код iOS:

[NSAnimationContext beginGrouping]; {
    [[NSAnimationContext currentContext] setDuration:.5];
    [[NSAnimationContext currentContext] setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
    [_myView.animator setAlphaValue:0.0];
} [NSAnimationContext endGrouping];

Длительность по умолчанию составляет 0,25 секунды.Я не уверен, что функция времени по умолчанию.Если вы согласны со значениями по умолчанию, вы можете просто сказать это:

[_myView.animator setAlphaValue:0.0];
3 голосов
/ 08 марта 2019

Обновление ответа rob mayoff в быстром ответе 4:

NSAnimationContext.beginGrouping()
NSAnimationContext.current.duration = 0.5
NSAnimationContext.current.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
myView.animator().alphaValue = 0
NSAnimationContext.endGrouping()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...