16進数のカラーコードからカスタムカラーを作成しようとしています。UIColor + Hexという別のクラスがあります。このクラスは、16進文字列を受け取り、それをカラーコードに変換して、UIColorを返します。
UIColor + Hex.h
#import <UIKit/UIKit.h>
@interface UIColor (Hex)
+ (UIColor *)colorWithHexString:(NSString *)hex;
@end
UIColor + Hex.m
#import "UIColor+Hex.h"
@implementation UIColor (Hex)
+ (UIColor *)colorWithHexString:(NSString *)hex
{
if ([hex length]!=6 && [hex length]!=3)
{
return nil;
}
NSUInteger digits = [hex length]/3;
CGFloat maxValue = (digits==1)?15.0:255.0;
NSUInteger redHex = 0;
NSUInteger greenHex = 0;
NSUInteger blueHex = 0;
sscanf([[hex substringWithRange:NSMakeRange(0, digits)] UTF8String], "%x", &redHex);
sscanf([[hex substringWithRange:NSMakeRange(digits, digits)] UTF8String], "%x", &greenHex);
sscanf([[hex substringWithRange:NSMakeRange(2*digits, digits)] UTF8String], "%x", &blueHex);
CGFloat red = redHex/maxValue;
CGFloat green = greenHex/maxValue;
CGFloat blue = blueHex/maxValue;
return [UIColor colorWithRed:red green:green blue:blue alpha:1.0];
}
@end
次に、UIColor + Hex.hを他のクラスの1つにインポートし、次の方法で呼び出します。
[self setSelectedfillColor:[UIColor colorWithHexString:@"FF0000"].CGColor];
このコードをヒットするたびに、このエラーが発生します...
'NSInvalidArgumentException'、理由:'+ [UIColor colorWithHexString:]:認識されないセレクターがクラス0x873d60に送信されました'
考えられることはすべて試しましたが、それでもエラーが発生し続けます。なぜこれが起こるのか誰かが何か考えを持っていますか?