Я пытаюсь создать пользовательские 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. Анимация по-прежнему противоречива.
BTW, я слышал, что анимации или задачи с участием UI всегда должны запускаться в основном потоке, но в моем втором коде анимация казалась сглаженной. Почему?