Как хранить анимацию в obj-c? - PullRequest
0 голосов
/ 14 декабря 2011

В моем классе есть 2 метода, и в каждом из них есть анимация.У меня вопрос, могу ли я хранить эти анимации в одном массиве или что-то и ссылаться на них по beginAnimation: name?Если да, как я могу это сделать?

спасибо за помощь

-(void)hideMenu{
    [UIView beginAnimations:@"HIDE_MENU" context:nil];
    [UIView setAnimationDuration:0.38];
    [UIView setAnimationDelay:0.12];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
    [UIView setAnimationBeginsFromCurrentState:YES];
    self.frame = CGRectMake(0, -1 * self.frame.size.height, self.frame.size.width, self.frame.size.height);
    [UIView commitAnimations];
}

-(void)showMenu{
    [UIView beginAnimations:@"SHOW_MENU" context:nil];
    [UIView setAnimationDuration:0.38];
    [UIView setAnimationDelay:0.12];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
    [UIView setAnimationBeginsFromCurrentState:YES];
    self.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
    [UIView commitAnimations];
}

-(void)handleShowMenu:(NSNotification*)note{
    [self showMenu];
}

-(void)handleHideMenu:(NSNotification*)note{
    [self hideMenu];
}

1 Ответ

1 голос
/ 14 декабря 2011

Вы не можете хранить анимации UIView, так как они не являются объектами. Даже с анимацией блоков api , представленной в 4.0, анимации по-прежнему являются просто действиями, выполняемыми статическими методами классов. Самое близкое, что вы можете сделать, это сохранить блоки и использовать их повторно, или просто делать то, что вы делаете, и поддерживать совместимость с версиями iOS старше 4.0.

Если вы действительно хотите сохранить свои анимации как объекты, вам следует пропустить анимацию UIView и перейти немного ниже к Core Animation .

...