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]。
相关文章推荐
- [UIColor colorWithRed: green: blue: alpha:] 自定义颜色失效问题
- .net调用别人的http页面,返回结果,url中有中文的处理,get和post两种方法
- [UIColor colorWithRed: green: blue: alpha:] 失效问题
- json返回hibernate的结果会自动调用(get)查询出关联表的数据,解决方法
- 解决[UIColor colorWithRed: green: blue: alpha:] 没有效果的问题
- HibernateDaoSupport的getHibernateTemplate.find()方法带参查询返回结果是nul问题解决
- 使用dwr同步调用导致无法获取js方法的返回结果问题的解决办法
- super.getClass()方法调用返回结果的原因
- GDI+中的一些方法如Image::GetWidth 时常返回信息错误的问题
- 解决通过Intent调用系统拍照程序,返回图片太小的问题[android]
- 问题小结(2)-dialog内容动态变化(调用系统方法时)
- 调用系统通讯录,返回结果
- VC2008下多线程环境中AfxGetMainWnd()返回空指针问题及解决方法
- CaptureDeviceManager.getDeviceList方法返回null对象问题探究
- iPhone开发笔记 (6) [UIColor colorWithRed:(CGFloat) green:(CGFloat) blue:(CGFloat) alpha:(CGFloat)]
- 如何把RGB函数的返回值还原成Red、Green、Blue
- 解决通过Intent调用系统拍照程序,返回图片太小的问题
- 【转】 解决通过Intent调用系统拍照程序,返回图片太小的问题[android]
- WIN7上UpdateLayeredWindow执行失败,getlasterror返回307的问题解决方法
- c# List find()方法返回值的问题(返回结果为对象的指针)