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

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中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益...
    韩七夏阅读 7,787评论 2 10
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,463评论 19 139
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 10,528评论 5 13
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 12,716评论 6 30
  • 想到感恩,总有太多值得感恩的人和事,真的真的很感谢我的真我天使指导灵高级智慧们,把心想生老师显化在我的生活中,让我...
    郭星言阅读 1,898评论 0 0