void (^first_animation)();
void (^second_animation)(BOOL finished);
// First animation
first_animation = ^()
{
g_pin_info_screen.view.alpha = 1.0;
};
// Second animation
second_animation = ^(BOOL finished)
{
g_shadow_layer.opacity = 0.0;
void (^set_opacity_to_1)();
set_opacity_to_1 = ^()
{
g_shadow_layer.opacity = 1.0;
};
[UIView animateWithDuration : 2.0
delay : 0.0
options : UIViewAnimationCurveEaseInOut
animations : set_opacity_to_1
completion : nil
];
};
// Begin the animations
{
float duration;
duration = 0.35;
[UIView animateWithDuration : duration
delay : 0.00
options : UIViewAnimationCurveEaseInOut
animations : first_animation
completion : second_animation
];
}
Первая анимация выполняется, как ожидалось. Но вторая анимация завершается, но без анимации.Правильный способ создания анимации цепей
Надеюсь, что кто-нибудь может прокомментировать, является ли приведенная выше схема правильным способом этого или нет.
Спасибо за ответ. Это немного больше, чем я думал. Но это очень сложно. Вы пробовали это в своем проекте? – Stanley
Он хорошо работает и чище для множества прикованных анимаций. Если вы попытаетесь связать кучу анимаций в блоке завершения блока анимации UIView, он может стать уродливым. Однако, если у вас есть только несколько анимаций, это немного перебор. – JeffRegan
В принципе, это создает очередь анимаций и срабатывает один за другим. UIViewAnimationOptionCurveLinear гарантирует, что анимация будет гладкой. – JeffRegan