UIAnimation, кажется, не работает эффективно - PullRequest
0 голосов
/ 12 марта 2011

Я использую некоторые простые свойства UIAnimation, чтобы показать и скрыть UIView.Этот код, кажется, отлично работает в первый раз.Но после этого эффект анимации не виден.Есть ли что-то, что я делаю не так в этом коде .. Я публикую свой код здесь .. Пожалуйста, исправьте меня, если мой код неверен, и, пожалуйста, предложите мне правильный подход.Спасибо.

-(IBAction)animateSingleTap:(UIButton*)sender{
NSLog(@"trying to animate singletap");

    if(singleTapViewIsShowing==NO){

    [searchController hideSelf];
    [singleTapView sendSubviewToBack:hideSingleTapButton ];
    hideSingleTapButton.frame=CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
    [UIView beginAnimations:@"single tap animation" context:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
    [UIView setAnimationTransition:UIViewAnimationCurveEaseInOut forView:singleTapView cache:YES];
    [self.view addSubview:singleTapView];
    hideSingleTapButton.frame=CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
    [self.view bringSubviewToFront:singleTapView];
    optionsButton.selected=YES;
    singleTapViewIsShowing=YES;
    singleTapView.frame=CGRectMake(sender.frame.origin.x-95, sender.frame.origin.y+30, singleTapView.frame.size.width, singleTapView.frame.size.height);

    [UIView commitAnimations];

}

else {

    [UIView beginAnimations:@"single tap animation" context:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
    [UIView setAnimationTransition:UIViewAnimationCurveEaseInOut forView:singleTapView cache:YES];
    [singleTapView removeFromSuperview];
    optionsButton.selected=NO;
    [UIView commitAnimations];
    singleTapViewIsShowing=NO;

}

}

1 Ответ

0 голосов
/ 12 марта 2011

Вы говорите, что анимация работает в первый раз, но впоследствии не запускается. Вы устанавливаете свой sigleTapViewIs, Показывающий НЕТ где-нибудь еще в вашем коде? Из вас нет анимации, сработает в первый раз и выполнит ...

singleTapViewIsShowing=YES;

Это остановит анимацию, пока вы не сбросите этот флаг в другом месте. Вы?

...