一个iOS6系统bug+一个iOS7系统bug

时间:2023-01-22 05:39:17

先看实际工作中遇到的两个bug:
(1)iPhone Qzone有一个导航栏背景随着页面滑动而渐变的体验,当页面滑动到一定距离时,会改变导航栏上title文本的颜色,但是有一个莫名其妙的bug,如下:
一个iOS6系统bug+一个iOS7系统bug一个iOS6系统bug+一个iOS7系统bug
在iOS7、iOS8上面只会改变文字,而不会改变三个点的颜色。

(2)iPhone Qzone 5.2新加了一个抽屉需求,当为默认主题时抽屉背景需要使用纯白加0.92的alpha透明度,在iOS7、iOS8上面正常,在iOS6.1.3上面就黑一片.
这两个bug都很费解,后面发现真面目是下面这样的。

1. 一个iOS6系统bug:
通过UIColor系统api: - getRed:green:blue:alpha: 获取非 + colorWithRed:green:blue:alpha: api 构造的color(即whiteColor、grayColor、redColor等iOS默认自带的一批颜色)的三原色时,会有问题。

先看一个函数:
一个iOS6系统bug+一个iOS7系统bug

再看一段代码:
一个iOS6系统bug+一个iOS7系统bug

断点处打印结果:
iOS6.1.3:
一个iOS6系统bug+一个iOS7系统bug

iOS 7、iOS 8:
一个iOS6系统bug+一个iOS7系统bug
2. 一个iOS7及以后的系统bug:
当给UILabel设定的单行文本超出其frame.size.width时,系统会默认添加上三个点"...",在iOS7上当非第一次alloc init时指定textColor,后面动态指定textColr时,只会改变除文字的颜色,而不会改变“...”的颜色。在iOS6上面会连同文字和三个点颜色一起改变,废话不多说,看下面实验。

先看一段代码:
一个iOS6系统bug+一个iOS7系统bug
一个iOS6系统bug+一个iOS7系统bug
实验结果:
iOS6.1.3:
一个iOS6系统bug+一个iOS7系统bug
iOS7、iOS8:
一个iOS6系统bug+一个iOS7系统bug