我正在研究一个需要能够支持大量部分的圆环图。从一系列颜色中快速动态变换颜色
为此,每一节当然需要它自己的颜色。为此,我需要一种方法为每个部分动态创建一种新颜色。这很容易。但它也需要使用startColor和EndColor,因此它可以使用例如只有蓝色的颜色。
我没有管理这个使用下面的代码:
var rStartValue: CGFloat = 16
var gStartValue: CGFloat = 177
var bStartValue: CGFloat = 216
var rEndValue: CGFloat = 30
var gEndValue: CGFloat = 30
var bEndValue: CGFloat = 38
for percentFill in percentFills {
let progressLine = CAShapeLayer()
if rStartValue < rEndValue {
rStartValue += 1
} else if rStartValue > rEndValue {
rStartValue -= 1
}
if gStartValue < gEndValue {
gStartValue += 1
} else if gStartValue > gEndValue {
gStartValue -= 1
}
if bStartValue < bEndValue {
bStartValue += 1
} else if bStartValue > bEndValue {
bStartValue -= 1
}
}
不过。这还不是理想的结果。
我需要它适当地进行。现在它在每个循环中只有1个值。如果有很多部分,哪个是可以的,但有时候只有17个左右。
所以我需要它来计算基于节的数量多少步。
经过与百分比填充/各种相关变量的各种版本搞乱之后。
我最终在这里,希望有人能帮助我弄清楚如何使这些颜色正确步骤。
这里是什么,我一直想一个例子:
var rJump = CGFloat(percentFills.count)/(rStartValue-rEndValue)
var gJump = CGFloat(percentFills.count)/(gStartValue-gEndValue)
var bJump = CGFloat(percentFills.count)/(bStartValue-bEndValue)
然后与rJump,gJump或bJump循环替换1。但是我试图用percentFills.count(总节数)来划分的每个变量都不能提供期望的结果。
startValue应始终为第一种颜色,endValue应始终为最后一种颜色。然后尽可能均匀地从头到尾。
任何帮助越过这个障碍将不胜感激!
而不是使用RGB,你可能会更好地使用HSL,其中H是色调,其实质上是颜色。 – zaph
我从来没有与HSL合作过。你如何在UIColor中使用HSL? –