UIView анимирует слайд, но не выдвигает его методом блочной анимации. - PullRequest
6 голосов
/ 14 сентября 2011

У меня есть UIView, который называется геопунктом. Я хочу анимировать слайд в этом пользовательском интерфейсе на главном экране при нажатии кнопки (myButton). Если myButton нажата снова, UIview должен выскользнуть из кадра. myButton вызывает следующий метод "optionsCalled"

-(void) optionsCalled
{
if (![[self.view subviews] containsObject:geopointView] &&checkForGeopointViewAnimation ==0) {

        [self.view addSubview:geopointView];
        geopointView.frame = CGRectMake(0,430,320,30);
        [UIView animateWithDuration:0.3f 
                         animations:^{
                             geopointView.frame = CGRectMake(0, 350, 100, 80);
                         }
                         completion:^(BOOL finished){
                             checkForGeopointViewAnimation = 1 ;
                         }];

    }
    if ([[self.view subviews] containsObject:geopointView] && checkForGeopointViewAnimation ==1)
    {

        geopointView.frame = CGRectMake(0, 350, 100, 80);
        [UIView animateWithDuration:0.3f 
                         animations:^{
                             geopointView.frame = CGRectMake(0,430,320,30);
                         }
                         completion:^(BOOL finished){
                             checkForGeopointViewAnimation = 0 ;
                         }];

        [geopointView removeFromSuperview];

    }

}

здесь checkForGeopointViewAnimation - глобальная переменная, определенная для обеспечения того, чтобы вход и выход не вызывались одновременно.

Проблема с этим кодом заключается в том, что UIview вставляется анимированно, но не анимирует действие слайда. он просто исчезает из основного кадра. Нужно ли здесь использовать какое-то время, чтобы задержка вызова добавления и удаления функций UIview?

Спасибо за любую помощь заранее

Ответы [ 2 ]

5 голосов
/ 14 сентября 2011

Попробуйте [geopointView removeFromSuperview]; после завершения анимации

4 голосов
/ 14 сентября 2011

Может, вам нужно вместо этого позвонить [geopointView removeFromSuperview]; в свой блок завершения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...