ios - iOS(Swift):将缩放值表示为 UIColor
问题描述
有没有办法生成一个UIColor
表格(或者一个 s 数组UIColor
),范围从red
到green
,这样一个变量var match = 100
将具有相应的颜色green
,而 avar match = 0
将具有相应的颜色red
,并且其间的变量值会随着它们的值接近而变得更绿100
?
谢谢你的帮助。
解决方案
这是一个有用的UIColor
扩展,可让您根据百分比混合两种颜色。
extension UIColor {
// This function calculates a new color by blending the two colors.
// A percent of 0.0 gives the "self" color
// A percent of 1.0 gives the "to" color
// Any other percent gives an appropriate color in between the two
func blend(to: UIColor, percent: Double) -> UIColor {
var fR : CGFloat = 0.0
var fG : CGFloat = 0.0
var fB : CGFloat = 0.0
var tR : CGFloat = 0.0
var tG : CGFloat = 0.0
var tB : CGFloat = 0.0
getRed(&fR, green: &fG, blue: &fB, alpha: nil)
to.getRed(&tR, green: &tG, blue: &tB, alpha: nil)
let dR = tR - fR
let dG = tG - fG
let dB = tB - fB
let perc = min(1.0, max(0.0, percent))
let rR = fR + dR * CGFloat(perc)
let rG = fG + dG * CGFloat(perc)
let rB = fB + dB * CGFloat(perc)
return UIColor(red: rR, green: rG, blue: rB, alpha: 1.0)
}
}
例子:
let red = UIColor.red.blend(to: .green, percent: 0)
let mix = UIColor.red.blend(to: .green, percent: 0.5)
let green = UIColor.red.blend(to: .green, percent: 1)
推荐阅读
- javascript - 在新窗口中使用 Highcharts 图表
- ansible - Ansible/Linux:设置组的成员列表
- jquery - 在下面的代码中,ordered_by("?") 做什么?
- vba - 使用工作表函数 vba 进行 vlookup 而不固定范围
- unity3d - 我可以使用 Unity 为 KaiOS 平台构建游戏吗?
- django - 如何计算多对多字段的值?
- sql-server-2012 - SSRS 2012 报告在 IE11 上的呈现
- r - 加载命名空间“rms”时未找到对象“plotp”
- ios - MessageKit:将手势识别器添加到 messageCollectionView 和 cellDelegate 不起作用
- javascript - 来自 API 数据的 React 组件图表