UIAnimation работает неэффективно

я использую некоторые простые свойства 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;

}

}


person A for Alpha    schedule 12.03.2011    source источник


Ответы (1)


Вы говорите, что анимация работает в первый раз, но потом не запускается. Вы устанавливаете свой sigleTapViewIsShowing на NO где-либо еще в своем коде? Если вы не анимация, она сработает в первый раз и выполнится...

singleTapViewIsShowing=YES;

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

person mmccomb    schedule 12.03.2011
comment
@ mmccomb: спасибо за твой ответ, братан.. я отредактировал свой код и опубликовал полный фрагмент кода.. на самом деле я устанавливаю singleTapViewIsShowing=NO в своем коде... пожалуйста, взгляни на мой код... я проверил мой код, поставив некоторые точки останова в этом методе. Элемент управления входит сюда, но эффект анимации не виден... - person A for Alpha; 12.03.2011
comment
Попробуйте изменить [UIView setAnimationTransition:UIViewAnimationCurveEaseInOut forView:singleTapView cache:YES]; на [UIView setAnimationTransition:UIViewAnimationCurveEaseInOut forView:self.view cache:YES]; в обоих блоках анимации. - person mmccomb; 12.03.2011
comment
@mmccomb: эй, братан.. я изменил свою стратегию здесь... Я решил использовать свойство alpha во фрагменте кода, и это сработало для меня. Я устанавливаю singleTapView.alpha=1, а затем меняю его обратно на 0, и это сработало для меня. Спасибо за помощь. ваше здоровье... - person A for Alpha; 13.03.2011