Как хранить анимацию в obj-c?

У меня есть 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 ответ

Решение

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

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

Другие вопросы по тегам