3

ここでUIImage色を置き換えるためのカテゴリを見つけました

問題は、メソッド シグネチャが符号なし整数カラー コードを受け取ることです。

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

から適切な符号なし整数値を取得するにはどうすればよいUIColorですか?

私は実際に黒を紫に置き換えたいと思っています。

4

1 に答える 1

8

ソースを見ていれば、この符号なし整数値を 16 進数のカラー コードとして使用していることがわかります。

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

したがって、次のようなものを使用して、UIColor オブジェクトからそのような 16 進値を取得できます。

@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];
于 2012-08-11T11:12:50.617 に答える