热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

UIColorgetHue:饱和度:亮度:alpha:返回NO

如何解决《UIColorgetHue:饱和度:亮度:alpha:返回NO》经验,为你挑选了1个好方法。



1> rmaddy..:

UIColor getHue:saturation:brightness:如果颜色的颜色空间是sRGB ,则该方法似乎不起作用,但如果颜色的颜色空间是扩展sRGB ,则该方法可行.

因此,解决方案是为颜色集资产中的每种颜色更新选定的颜色空间.

这可以在Swift Playground中演示如下.这将使用sRGB颜色空间创建颜色.

if let cs = CGColorSpace(name: CGColorSpace.sRGB) {
    if let cc = CGColor(colorSpace: cs, components: [0.5, 0.7, 0.3, 1.0]) {
        let color = UIColor(cgColor: cc)
        print(color)
        var h: CGFloat = 0
        var s: CGFloat = 0
        var b: CGFloat = 0
        if color.getHue(&h, saturation: &s, brightness: &b, alpha: nil) {
            print(h, s, b)
        } else {
            print("Failed with color space \(cs)")
        }
    }
}

这给出了输出:

kCGColorSpaceModelRGB 0.5 0.7 0.3 1
颜色空间失败(kCGColorSpaceICCBased; kCGColorSpaceModelRGB; sRGB IEC61966-2.1)

更新上述代码以使用CGColorSpace.extendedSRGB颜色空间可得到以下结果:

UIExtendedSRGBColorSpace 0.5 0.7 0.3 1
0.25 0.571428571428571 0.7


推荐阅读
author-avatar
一个人灬过世界amp丶_420
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有