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)