Как сделать "последовательную" анимацию с помощью НОД?

Я пытаюсь настроить отображение UIViewна экране в течение 5 секунд при получении удаленного уведомления.

Такой код:

//customView.alpha = 1.0 here
[UIView animateWithDuration:1 animations:^{
                                  customView.alpha = 0.3;
                              } 
                              completion:^(BOOL finished){
                                  // remove customView from super view.
                              }];

Проблема и что мне нужно

Но бывают случаи, что пара уведомлений может приходить через короткий промежуток времени, при этом несколько customViewмогут анимироваться одновременно. в то же время, и один может покрыть другие.

Я хочу, чтобы эти анимации выполнялись одна за другой, чтобы они не конфликтовали.

Предполагалось, но не удалось

//(dispatch_queue_t)queue was created in other parts of the code
dispatch_sync(queue, ^{
    [UIView animationWithDuration:animations:...];
});

После создания анимации в очереди GCD я получил тот же результат, что и исходный код, который я использовал, который не использовал GCD. Анимации по-прежнему конфликтуют.

Кстати,я слышал, чтоанимации или задачи, связанные с пользовательским интерфейсом , всегда должны выполняться в основном потоке, но во втором коде анимация казалась плавной. Почему?

10
задан studyro 30 May 2012 в 13:47
поделиться