Можете ли вы анимировать градиенты с помощью кварца в iPhone?
-
10-07-2019 - |
Вопрос
Я новичок в разработке для iPhone и в настоящее время занимаюсь воссозданием инструмента построения диаграмм, который я разработал для Silverlight.
В настоящее время я использую градиент, чтобы «заполнить» прямоугольник, представляющий столбец на диаграмме. Можно ли анимировать этот градиент, чтобы он менял цвет, когда пользователь касается панели на диаграмме.
Я просмотрел руководства по базовой анимации, предоставленные Apple, но не вижу свойства, нацеленного на градиенты. Я полагаю, что я мог бы использовать переход для постепенного исчезновения между двумя канатами, один из которых имеет мой начальный градиент, а второй - с «тронутой» версией, но это, очевидно, означало бы рисование нескольких прямоугольных объектов для каждого бара с дополнительными накладными расходами производительности. р>
Есть идеи?
Решение
Да, действительно, вы можете анимировать градиенты с помощью Core Animation.
Класс CAGradientLayer, вышедший в версии 3.0, имеет приятный API для рендеринга градиентов в слой, а также для анимации изменений цвета и цветовой остановки.
Я сделал пост в этом классе немного позже назад, вместе с примером кода, который связан в нижней части.
В этом примере я анимирую градиент, создав CABasicAnimation, но вы также можете неявно анимировать изменение, просто передав новый массив цветов в свойство colors слоя градиента. Используйте неявную анимацию, если у вас нет причин не делать этого.
Проверьте это и дайте мне знать, если у вас есть какие-либо вопросы, касающиеся пользовательского интерфейса, который вы пытаетесь анимировать.