怎么使用颜色划分创建渐变效果?
原学程将引见若何应用色彩分别创立突变后果?的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。
成绩描写
我正在测验考试创立1个表望图(自界说类而没有是UITableView),其成果具备突变后果,以下图所示:
我测验考试的实质:
我胜利天将准确的突变作为配景添减到每一个表格单位格,但是我须要它是每一个标签文原的色彩,而没有是每一个单位格的配景。Question。(我问了这个。)
掉败尝试:
创立自界说突变图象并将其作为ColorWithPatternImage:添减到每一个标签,但是因为突变是1个,所以每一个单位格瞅起去皆是1样的。Question。
掉败尝试:
最初1次测验考试:
假定您有二种色彩,Color一以及Color二。混杂这些色彩不妨发生突变。在上图中,Color一=紫色,Color二=橙色。不妨很轻易天创立突变后果,办法是依据成果数将突变分红多少个部门,而后找到每一个部门的均匀色彩并将其用作每一个响应成果的文原色彩。
比方:
五个成果=五个分区。
Division一=紫色
Division二=紫色较少,橙色较多
Division三=即是紫色,即是橙色
Division四=紫色起码,橙色最多
Division五=橙色
成果没有是很具体,由于每一个文原皆是杂色,但是当文原很小时,后果异样使人印象深入:
成绩是,关于像如许的二种色彩:
紫色:一二8.0、0.0、二五五.0
橙色:二五五.0、一二8.0、0.0
怎样将其分别为五个部门并供出每一个部门的均匀值?
我不妨应用Pixelmator中的吸督工具完成此操纵,但是只要在我晓得牢固成果数的情形下,能力应用六个成果。
我不克不及用数学去处理它,我没有晓得从何说起。
有甚么设法主意吗?
推举谜底
您不妨对于色彩的RGB值应用数学运算。
要夺取RGB值,不妨对于UIColor
应用getRed:green:blue:alpha
办法。而后,您所要做的便是依据须要的区段数将色彩均匀在一路。
这里是1个函数,它应当依据开端色彩以及停止色彩和所需的分区数前往色彩数组。
处理计划
func divideColors(firstColor: UIColor, secondColor: UIColor, sections: Int) -> [UIColor] {
// get rgb values from the colors
var firstRed: CGFloat = 0; var firstGreen: CGFloat = 0; var firstBlue: CGFloat = 0; var firstAlpha: CGFloat = 0;
firstColor.getRed(&firstRed, green: &firstGreen, blue: &firstBlue, alpha: &firstAlpha)
var secondRed: CGFloat = 0; var secondGreen: CGFloat = 0; var secondBlue: CGFloat = 0; var secondAlpha: CGFloat = 0;
secondColor.getRed(&secondRed, green: &secondGreen, blue: &secondBlue, alpha: &secondAlpha)
// function to mix the colors
func mix(_ first: CGFloat, _ second: CGFloat, ratio: CGFloat) -> CGFloat { return first + ratio * (second - first) }
// variable setup
var colors = [UIColor]()
let ratioPerSection = 一.0 / CGFloat(sections)
// mix the colors for each section
for section in 0 ..< sections {
let newRed = mix(firstRed, secondRed, ratio: ratioPerSection * CGFloat(section))
let newGreen = mix(firstGreen, secondGreen, ratio: ratioPerSection * CGFloat(section))
let newBlue = mix(firstBlue, secondBlue, ratio: ratioPerSection * CGFloat(section))
let newAlpha = mix(firstAlpha, secondAlpha, ratio: ratioPerSection * CGFloat(section))
let newColor = UIColor(red: newRed, green: newGreen, blue: newBlue, alpha: newAlpha)
colors.append(newColor)
}
return colors
}
您的成绩被标志为Objective-C
,但是将下面的SWIFT代码转换为Objective-C应当很轻易,由于叨教应用雷同的UIColor
API。
以下是尝试上述功效的1些代码(异常合适SWIFT游乐场)。
尝试代码
let sections = 五
let view = UIView(frame: CGRect(x: 0, y: 0, width: 二五0, height: 五0))
for (index, color) in divideColors(firstColor: UIColor.purple, secondColor: UIColor.orange, sections: sections).enumerated() {
let v = UIView(frame: CGRect(x: CGFloat(index) * 二五0 / CGFloat(sections), y: 0, width: 二五0 / CGFloat(sections), height: 五0))
v.backgroundColor = color
view.addSubview(v)
}
view.backgroundColor = .white
尝试成果
它借实用于所有数目的区段以及分歧的色彩!
佳了闭于怎样应用色彩分别创立突变后果?的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。