Можете ли вы анимировать градиенты с помощью кварца в iPhone?

StackOverflow https://stackoverflow.com/questions/1819311

Вопрос

Я новичок в разработке для iPhone и в настоящее время занимаюсь воссозданием инструмента построения диаграмм, который я разработал для Silverlight.

В настоящее время я использую градиент, чтобы «заполнить» прямоугольник, представляющий столбец на диаграмме. Можно ли анимировать этот градиент, чтобы он менял цвет, когда пользователь касается панели на диаграмме.

Я просмотрел руководства по базовой анимации, предоставленные Apple, но не вижу свойства, нацеленного на градиенты. Я полагаю, что я мог бы использовать переход для постепенного исчезновения между двумя канатами, один из которых имеет мой начальный градиент, а второй - с «тронутой» версией, но это, очевидно, означало бы рисование нескольких прямоугольных объектов для каждого бара с дополнительными накладными расходами производительности.

Есть идеи?

Это было полезно?

Решение

Да, действительно, вы можете анимировать градиенты с помощью Core Animation.

Класс CAGradientLayer, вышедший в версии 3.0, имеет приятный API для рендеринга градиентов в слой, а также для анимации изменений цвета и цветовой остановки.

Я сделал пост в этом классе немного позже назад, вместе с примером кода, который связан в нижней части.

В этом примере я анимирую градиент, создав CABasicAnimation, но вы также можете неявно анимировать изменение, просто передав новый массив цветов в свойство colors слоя градиента. Используйте неявную анимацию, если у вас нет причин не делать этого.

Проверьте это и дайте мне знать, если у вас есть какие-либо вопросы, касающиеся пользовательского интерфейса, который вы пытаетесь анимировать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top