Правя преход от програмиране на 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];
}
Викам тази функция (скрий) няколко пъти понякога, докато функцията за избледняване все още може да работи.
Отговори:
15 за отговор № 1Това трябва да доведе до същия резултат като вашия iOS код:
[NSAnimationContext beginGrouping]; {
[[NSAnimationContext currentContext] setDuration:.5];
[[NSAnimationContext currentContext] setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[_myView.animator setAlphaValue:0.0];
} [NSAnimationContext endGrouping];
Продължителността по подразбиране е .25 секунди. Не съм сигурен каква е функцията за синхронизиране по подразбиране. Ако сте добре с настройките по подразбиране, можете просто да кажете това:
[_myView.animator setAlphaValue:0.0];