Вы устанавливаете animationBeginsFromCurrentState:
, который явно указывает системе анимировать в зависимости от того, где в данный момент находится экран. На данный момент кадр все еще находится в {0,0}, потому что цикл выполнения не завершен, поэтому ни одна из ваших предыдущих транзакций setFrame:
не была применена. Во-первых, возьмите эту строку, которая может исправить это сама. Если нет, есть другие способы установить fromValue
так, как вы описываете.
Основной поток, однако, странный. Если код такой, как вы предлагаете, стрелка находится на экране {0,0}, и вы заставите ее исчезнуть и снова сдвинетесь. Это действительно анимация, к которой вы стремитесь, или есть еще анимации, которые вы оставили? Какой полный эффект вы пытаетесь достичь?
Обратите внимание, что у вас есть arrow
в одном случае и symbolArrow
в другом, что, как я полагаю, является опечаткой, но определенно было бы проблемой, если бы это были разные объекты.