Я пытаюсь нарисовать «конический» / «дугообразный» градиент (я не знаю, каков будет правильный термин для этого) (Фотошоп называет это «угловым» градиентом - ваш дружественный соседский стекопоток редактор) с использованием Objective-C (IOS), почти так же, как изображение, показанное в следующем потоке .
После нескольких дней поиска и поиска в интернете безрезультатно, я решил обратиться за помощью сюда.
Небольшая предыстория того, что я пытаюсь сделать. Моя цель состоит в том, чтобы создать пользовательский UIView, который представляет собой круговую диаграмму выполнения, в основном кольцо, несколько похожее на индикатор активности, как видно в приложении iPhone TweetBot (отображается при перетаскивании для обновления, что можно увидеть в действии здесь , около 17-18 секунд видео, в верхней части экрана iphone). Я хочу, чтобы индикатор прогресса (заливка кольца) представлял собой простой двухцветный градиент, который можно установить программным способом, а размер представления можно изменить.
Заполнение формы кольца градиентом, который «следует» за дугой кольца, - вот где я застрял. Ответы, которые я получаю от поиска в Google, прочтения документации Apple Core Graphics по градиентам и поиска по SO, касаются либо радиальных градиентов, либо линейных / осевых градиентов, чего я не пытаюсь достичь.
В приведенной выше ветке предлагается использовать готовые изображения, но это не вариант, потому что цвета градиента должны быть настраиваемыми, вид должен быть изменяемого размера и заполнение индикатора выполнения не всегда заполнено на 100%. очевидно (что будет состояние градиента, как показано на рисунке в теме выше).
Единственное решение, которое я придумала, - это нарисовать градиент «вручную», поэтому без использования CGGradientRef
, обрезая небольшие кусочки градиента с помощью однотонных заливок в круговой траектории. Я не знаю точно, насколько хорошо это будет работать, когда панель анимируется, хотя это не должно быть так плохо, но это может быть проблемой.
Итак, мой первый вопрос:
Есть ли более простое / отличное решение для рисования конического / дугового градиента в Objective-C (IOS), чем решение, которое я придумал?
Второй вопрос:
Если мне нужно нарисовать градиент вручную в моем виде, используя решение, которое я придумала, как я могу определить или рассчитать (если это вообще возможно) значение (HEX или RGBA) каждого среза цвета " «градиента, который я пытаюсь нарисовать, как показано на рисунке ниже.
(Невозможно связать изображение) Иллюстрация среза градиента