UIColor在iOS 10上缺少蓝色值

时间:2016-09-23 16:02:13

标签: ios objective-c rgb uicolor

我的iOS应用程序创建浅蓝色以用作表格单元格的背景,如下所示:

UIColor *bgColor = [UIColor colorWithRed:0/0.0 green:115/255.0 blue:140/255.0 alpha:1.0];

自iOS 10发布以来,两位用户发送了屏幕截图,显示此颜色呈现为粉红色。我在Photoshop中进行了比较,发现如果将蓝色值更改为0,粉红色就是我用上面的RGB值得到的。所以看来,当我创建颜色时蓝色值会丢失。这似乎与应用程序中的任何其他颜色无关,我对代码进行了比较,并且我以同样的方式创建了其他颜色。

出现问题的设备是iPhone 6s和iPhone SE,两者都比我的最新设备更新。问题不会发生在我的iPhone 6或iPad Air 2上。

奇怪的是,我曾经偶尔在Xcode 7及更早版本的iOS模拟器中看到这种情况,但我忽略了它,因为它看起来像是模拟器的一小部分。现在它并没有在Xcode 8模拟器中发生,但这是我第一次意识到它曾经发生在真实设备上。

我发现在iOS 10中对colorWithRed:green:blue:alpha:方法进行了一些更改,并且通常对颜色渲染进行了一些更改,但我的值并未超出范围。我会向Apple报告一个错误,但与此同时有人可以为此提出解释吗?

1 个答案:

答案 0 :(得分:4)

我认为问题在于iOS 10 SDK 1中引入的扩展色彩空间,即颜色分量值不再被限制在[0,1]范围内。 with open(file,"w") as f: for i in new: f.write(i+"\n") f.close() 的红色成分是无穷大或NaN,而不是预期的0/0.0