Скорее всего, представление изображения имеет ограничения AutoLayout, и после viewDidLoad размер представления содержимого контроллера представления изменяется для текущего размера дисплея, и ограничения применяются. Это приведет к тому, что изменения вашего кадра будут проигнорированы.
Я бы ожидал, что альфа-анимация все еще будет работать, поэтому ваше изображение должно анимироваться в течение 20 секунд (поэтому очень медленно.)
Если этого не произойдет, я бы предложил установить arrowImage.alpha на 1.0 без какой-либо анимации и убедиться, что он появляется. Если он все еще не появляется, значит что-то еще не так, и вам придется это выяснить.
Вы должны переместить свой код анимации в viewDidAppear, как предлагает BonanzaDriver, и вы должны создать IBOutlet для ограничения AutoLayout для положения x и анимировать константу этого ограничения в вашей анимации, а не пытаться анимировать кадр (поскольку AutoLayout часто отменяет изменения в вашем явные настройки рамки / границ.)