Анимации не запускаются сразу после вызова метода - PullRequest
1 голос
/ 23 июня 2011

В моем делегате приложения я выполняю свой метод updateData, используя performSelecorInBackground:withObject.В конце публикуется уведомление, которое сообщает наблюдателю в моем табличном представлении о необходимости перезагрузить данные.

Моя проблема с анимациями: используя приведенный ниже код, мои анимации начинаются в конце метода, а не напрямуюпосле performSelector.

Это как-то связано с фоновым выделением селектора или есть что-то еще, чего я не вижу?

Любая помощь будет принята с благодарностью.* Спасибо!

- (void) updateData: (NSString *)newVersionNumber {


    ... CODE ...


    UIView *update = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 360, 20)];
    update.backgroundColor = [UIColor blackColor];
    [self.navController.view addSubview:update];

    [self performSelector:@selector(updateDownAnimation) withObject:nil];


    ... CODE ...


    [[NSNotificationCenter defaultCenter] postNotificationName:@"tableviewShouldReload" object:nil];


    ... CODE ...

    [self performSelector:@selector(updateUpAnimation) withObject:nil];

}

- (void) updateDownAnimation {


    [UIView animateWithDuration:0.3 animations:^{
        _window.frame = CGRectOffset(_window.frame, 0, 20);

    }];

}

1 Ответ

4 голосов
/ 23 июня 2011

Не рекомендуется делать вещи из UIKit во вторичных потоках.Вы можете изменить это на

[self performSelectorOnMainThread:@selector(updateUpAnimation)
                       withObject:nil
                    waitUntilDone:YES];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...