#ios #swift #uicolor #ios-charts
#iOS #swift #uicolor #ios-диаграммы
Вопрос:
Я создаю небольшую круговую диаграмму, и я хотел бы, чтобы каждая запись на диаграмме становилась все светлее и светлее, чем меньше становятся кусочки круга. Я должен сгенерировать массив UIColor
, чтобы раскрасить диаграмму.
Вот что у меня есть прямо сейчас:
for i in 0..<entries.count {
let percent = 1.0 - (CGFloat(i - 1)/CGFloat(entries.count))
dataSet.colors.append(UIColor.systemPurple.withAlphaComponent(percent))
}
Я бы хотел, чтобы цвета на диаграмме были больше похожи на это: (извините, я просто быстро сделал это в Google таблицах в качестве примера)
Есть идеи?
Комментарии:
1. ваша формула let percent = 1.0 — (CGFloat (i — 1) / CGFloat (entries.count)) для меня странная, попробуйте проверить процентное значение для каждого цикла
2. Я попробую
Ответ №1:
Попробуйте использовать это решение.
var initialAlpha = 1.0
for i in 0..<entries.count {
dataSet.colors.append(UIColor.systemPurple.withAlphaComponent(initialAlpha))
initialAlpha -= 0.1
}
Вы также можете изменить значение разницы 0,1 на любое дробное значение, скажем, 0,15 или 0,2 и т.д. В соответствии с вашими требованиями.
Комментарии:
1. Хорошая идея, я попробую и свяжусь с вами
2. Это сработало! В итоге я вычел из суммы долю элементов набора в общем проценте следующим образом:
initialAlpha -= CGFloat(1)/CGFloat(entries.count)
Ответ №2:
Возможно, вы захотите использовать другую цветовую модель, такую как HSB, и изменять один или несколько из этих параметров для разных цветов. В вашем случае похоже, что вы используете ярко-фиолетовый цвет и хотите изменить насыщенность от 100% до 0%.
Затем вы могли бы создать свои цвета, используя инициализатор UIColor init(hue:saturation:brightness:alpha:)
Немного доработав его, цвета со значениями оттенка 300, яркости 100% и насыщенности 100%, 80%, 60%, 40%, 20% и 0% выглядели прилично.