gpt4 book ai didi

ios - iPhone 6比较两个UIColors

转载 作者:行者123 更新时间:2023-12-01 16:35:27 28 4
gpt4 key购买 nike

我有两种颜色,这里是实例的日志:

(lldb) po acolor
UIDeviceRGBColorSpace 0.929412 0.133333 0.141176 1

(lldb) po hexColor
UIDeviceRGBColorSpace 0.929412 0.133333 0.141176 1

我的这段代码适用于iPhone 4s 5,但不适用于iPhone 6:
if ([acolor isEqual:hexColor])
{
// other code here.
}

另外,我从图像的像素创建这种无彩色:
CGFloat red   = (rawData[byteIndex]     * 1.0) / 255.0;
CGFloat green = (rawData[byteIndex + 1] * 1.0) / 255.0;
CGFloat blue = (rawData[byteIndex + 2] * 1.0) / 255.0;
CGFloat alpha = (rawData[byteIndex + 3] * 1.0) / 255.0;

但是,似乎iPhone 4和iPhone 6的值存在一些差异:

例如,如果我在iPhone 6上打印红色,它具有:
(lldb) po red
0.92941176470588238

对于iPhone 4:
(lldb) po red
0.929411768

由于我认为32位和64位体系结构,因此值有所不同。

但是,正如我们在颜色上看到的那样,它们似乎具有正确的值,并且似乎已取整。但它从来没有将它与成功相提并论。因此,acolor不等于hexColor。决不。仅适用于iPhone 4和5。

当然,我可以使用 float类型代替 CGFloat。但是只是注意到,四舍五入似乎可行,并且 UIColors对于不同的设备具有相同的值。但是比较不起作用。

我使用以下方法获取hexColor:
+ (UIColor *)colorWithHexString:(NSString *)hexString
{
const char *cStr = [hexString cStringUsingEncoding:NSASCIIStringEncoding];
long x = strtol(cStr, NULL, 16);
return [UIColor colorWithHex:(UInt32)x];
}

+ (UIColor *)colorWithHex:(UInt32)col {

unsigned char r, g, b;
b = col & 0xFF;
g = (col >> 8) & 0xFF;
r = (col >> 16) & 0xFF;

return [UIColor colorWithRed:(float)r/255.0f
green:(float)g/255.0f
blue:(float)b/255.0f
alpha:1];
}

最佳答案

您是否尝试过将两者都舍入为相同的十进制数,然后进行比较?
例如,如果您同时舍入9个小数会发生什么?

float rounded = roundf (original * 1000000000) / 1000000000.0;

这段代码改编自alastair在此问题中的帖子: Round a float value to two post decimal positions

关于ios - iPhone 6比较两个UIColors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28719727/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com