我找到了一个用于替换颜色 hereUIImage 类别

问题是方法签名收到一个无符号整数颜色代码:

- (UIImage *)imageByRemovingColorsWithMinColor:(uint)minColor maxColor:(uint)maxColor

如何从 UIColor 获得正确的无符号整数值?

我实际上想用紫色替换黑色。

最佳答案

如果您查看过源代码,您会发现他们使用这个无符号整数值作为十六进制颜色代码,其中

colorcode = ((unsigned)(red * 255) << 16) + ((unsigned)(green * 255) << 8) + ((unsigned)(blue * 255) << 0)

因此,您可以使用以下方法从 UIColor 对象中获取这样的十六进制值:
@implementation UIColor (Hex)

- (NSUInteger)colorCode
{
    float red, green, blue;
    if ([self getRed:&red green:&green blue:&blue alpha:NULL])
    {
        NSUInteger redInt = (NSUInteger)(red * 255 + 0.5);
        NSUInteger greenInt = (NSUInteger)(green * 255 + 0.5);
        NSUInteger blueInt = (NSUInteger)(blue * 255 + 0.5);

        return (redInt << 16) | (greenInt << 8) | blueInt;
    }

    return 0;
}

@end

然后像这样使用它:
NSUInteger hexPurple = [[UIColor purpleColor] colorCode];

关于iphone - UIColor 到无符号整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11914137/

10-12 23:26