Swift 获取颜色值RGB

前言:

还是在袁峥先生写的快速集成App中顶部标题滚动条这篇文章里, 有一个标题RGB 渐变的样式, 就是 label 上的文字从一种颜色随着进度(0%~100%) 变换到另一种颜色, OC 的代码转移到 Swift 里我不知道怎么写了,百度了一下,找到了另一种写法.

效果图:


变的原谅.gif

袁先生的代码:


OC

那么,作为一个愉快的 controlCV 工程师,该怎么做呢?

上代码!代码:

extension UIColor {
    
    //获取某个颜色的 RGBA 值
    func iNeedRBGA() -> (r: CGFloat, g: CGFloat, b: CGFloat, a: CGFloat) {
        var r: CGFloat = 0
        var g: CGFloat = 0
        var b: CGFloat = 0
        var a: CGFloat = 0
        getRed(&r, green: &g, blue: &b, alpha: &a)
        return (r, g, b, a)
    }
}

在 ViewController 里测试
我在 XIB 上拖了一个 Label(初始颜色随便弄一个) 和一个 Slider(初始值设置为0), 改写之后:


import UIKit

class ViewController: UIViewController {
    
    @IBOutlet weak var llll: UILabel!
    
    var oldcolor:(r: CGFloat,g: CGFloat,b: CGFloat,a: CGFloat)! = nil
    
    var newcolor:(r: CGFloat,g: CGFloat,b: CGFloat,a: CGFloat)! = nil
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        oldcolor = llll.textColor.iNeedRBGA()
        
        newcolor = UIColor.green.iNeedRBGA();
    }
    
    @IBAction func aaaaa(_ sender: UISlider) {
        
        let progress = CGFloat(sender.value)
        
        let R = oldcolor.r + (newcolor.r - oldcolor.r) * progress
        let G = oldcolor.g + (newcolor.g - oldcolor.g) * progress
        let B = oldcolor.b + (newcolor.b - oldcolor.b) * progress
        let A = oldcolor.a + (newcolor.a - oldcolor.a) * progress
        
        llll.textColor = UIColor(red: R, green: G, blue: B, alpha: A)
        
    }
}

感谢这位 iOS 玩家提供的灵感
iOS开发:根据颜色得到对应的RGB值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。