Я некоторый код, который я не могу понять, почему это не работает,Сравнение UIColors
UIColor *lastColor, *red;
red = [UIColor colorWithRed:0.993 green:0.34444 blue:0.0 alpha:1.0];
NSString *chosenColor;
if([lastColor isEqual: red])
{
chosenColor = @"red";
}
Я также нашел несколько людей, делающих переопределение метода IsEqual, isEqualtoColor: Но это Ждут» t, и я накормил, что один lastColor.CGColor;
Всюду, где я читал, что isEqual - это все, что вам нужно для сравнения UIColors, im в настоящее время прибегает к массиву строк для красного, зеленого и синего и сравнивает значение float с CGColorGetComponents (lastColor);
Но это тоже не работает.
Да, это особый красный цвет не по умолчанию redColor, так, например, + (UIColor *) colorWithRed: (CGFloat) красный зеленый: (CGFloat) зеленый синий: (CGFloat) синий альфа: (CGFloat) альфа; Im печатает значения, и они оба точно такие же ... точно ... но isEqual просто игнорирует этот факт. – Woodmister1
Это странно. Это работает для меня: \t UIColor * aColor = [UIColor colorWithRed: 1.0 green: 0.0 blue: 0.0 alpha: 1.0]; \t NSLog (@ "% d", [aColor isEqual: [UIColor redColor]]); Если цвета имеют точно такие же компоненты, -isEqual должен работать без проблем. Вы проверили * все * компоненты, включая альфа? –
Да, но я не сравниваю с redColor, если я делаю то, что вы говорите, если ([color isEqual: [UIColor red]]) Я получаю [*** Terminating app из-за неперехваченного исключения «NSInvalidArgumentException», причина: «+ [UIColor redC]: непризнанный селектор, отправленный в класс] – Woodmister1