您的位置:首页 > 产品设计 > UI/UE

IOS7.0系统上,特定颜色调用`- getRed:green:blue:alpha:`方法返回结果有误的问题

2016-08-24 19:09 465 查看

1. 问题描述:

项目中,一个页面的NavigationBar是有动画效果的,Title的颜色会不断变化。测试的时候发现,在IOS7.0系统上本来应该是白色的Title变成了黑色。调试发现问题出在一个系统API上
- getRed:green:blue:alpha:
。在7.0系统上对
[UIColor whiteColor]
调用这个API,获取R、G、B值是错误的,均为接近0的小数,正确的结果是1。

2. 原因:

+ (UIColor *)blackColor;      // 0.0 white
+ (UIColor *)darkGrayColor;   // 0.333 white
+ (UIColor *)lightGrayColor;  // 0.667 white
+ (UIColor *)whiteColor;      // 1.0 white
+ (UIColor *)grayColor;       // 0.5 white


原因是系统对部分颜色的存储进行了优化,用两个字节存储这些颜色,按RGB的存储方式去取值就会得到错误的值。7.0以上的系统,这个API对这些特殊存储的颜色进行了兼容处理,返回值是正确的。

3. 简单解决方法:

如果要用这个API
- getRed:green:blue:alpha:
,用
[UIColor colorWithRGB:0xffffff]
代替
[UIColor whiteColor]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios 兼容性
相关文章推荐