Swift - 计算一个颜色的反色(UIColor的反色)
作者:hangge | 2018-10-29 08:10
有时我们需要通过一个颜色算出此颜色的反色,下面通过样例演示如何实现。

1,扩展 UIColor
为方便使用,我们首先对 UIColor 进行扩展,增加一个 invertColor() 方法。调用该方法即可得到当前颜色的反色。
import UIKit
extension UIColor {
//获取反色
func invertColor() -> UIColor {
var r:CGFloat = 0, g:CGFloat = 0, b:CGFloat = 0
self.getRed(&r, green: &g, blue: &b, alpha: nil)
return UIColor(red:1.0-r, green: 1.0-g, blue: 1.0-b, alpha: 1)
}
}
2,使用样例
(1)效果图
- 页面上创建并添加 8 个不同颜色的按钮。
- 无论按钮背景被设置成什么颜色,其文字颜色都是背景色的反色。

(2)样例代码
import UIKit
import Highlightr
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//各个按钮的颜色
let colors = [UIColor.black,
UIColor.red,
UIColor.orange,
UIColor.yellow,
UIColor.green,
UIColor.cyan,
UIColor.blue,
UIColor.purple]
//遍历颜色创建相应的按钮
for i in 0..<colors.count {
let button = UIButton(frame:CGRect(x:40, y:80 + i * 40, width:100, height:30))
button.setTitle("按钮\(i)", for:.normal)
button.backgroundColor = colors[i] //设置背景色
button.setTitleColor(colors[i].invertColor(), for: .normal) //文字颜色为背景色的反色
self.view.addSubview(button)
}
}
}
全部评论(0)