Я новичок в разработке iPhone и в настоящее время играю с воссозданием графического инструмента, разработанного для Silverlight.Можете ли вы изменить градиенты с помощью кварца в iPhone?
В настоящее время я использую градиент, чтобы «заполнить» прямоугольник, представляющий панель внутри диаграммы. Можно ли анимировать этот градиент, чтобы он менял цвет, когда пользователь касается панели в диаграмме.
Я просмотрел основные руководства по анимации, предоставленные Apple, но не вижу свойства, которое нацелено на градиенты. Я полагаю, что я мог бы использовать переход к исчезновению между двумя прямоугольниками, один из которых имеет мой начальный градиент, а второй с «тронутой» версией, но это означало бы, очевидно, рисование нескольких объектов прямоугольника для каждого бара, и я предполагаю дополнительные служебные накладные расходы.
Любые идеи?
Thanks Joe - теперь он работает точно так, как планировалось. Был немного тупик, поскольку я не знал, что вам нужно установить рамку слоя. Провел много времени, глядя на пустой вид, пока не понял, что мой градиентный слой имеет размеры 0,0,0,0 ... У меня есть вопрос к вам, если у вас есть время - можно ли рисовать дорожки внутри каждого слоя? Я пытаюсь добавить удар вокруг каждого бара. Все, что я могу сделать, это добавить штрих к прямоугольнику основного вида, а не к каждому слою. Я предполагаю, что это связано с тем, что контекст рисования установлен в UIView, а не в слое, но я не могу найти способ переместить контекст ... –
Да, определенно. Слои на самом деле лучше работать, чтобы что-то подобное делать. CALayer имеет встроенные свойства для cornerRadius, borderColor, borderWidth, backgroundColor и т. Д. Поэтому очень просто настроить кучу слоев и указать разные визуальные атрибуты для каждого без использования графического контекста. Ознакомьтесь с документами CALayer для этих свойств. http://j.mp/6ad0fi Если вы хотите сделать собственный чертеж Quartz внутри слоя, вы можете подклассифицировать слой и реализовать -drawInContext: или настроить делегат, который реализует -drawLayer: inContext: –