Да, действительно, вы можете анимировать градиенты с помощью Core Animation.
Класс CAGradientLayer, вышедший в версии 3.0, имеет приятный API для рендеринга градиентов в слой, а также для анимации изменений цвета и цветовой остановки.
Я сделал пост для этого класса некоторое время назад вместе с некоторым примером кода, который связан внизу.
В примере я анимирую градиент, создавая CABasicAnimation, но вы также можете неявно анимировать изменение, просто передав новый массив цветов в свойство colors слоя градиента. Используйте неявную анимацию, если у вас нет причин не делать этого.
Проверьте это и дайте мне знать, если у вас есть какие-либо вопросы, касающиеся пользовательского интерфейса, который вы пытаетесь анимировать.