返回 导航

Swift

hangge.com

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)

回到顶部