2015-07-07 2 views
-1

Я пытаюсь проверить, является ли изображение правильным изображением в UIButton. Я тестировал этот код, я знаю, это одно и то же изображение, но не работает.Сравните текущее изображение UIButton с изображением

UIButton *myButton = sender; 

if ([myButton.currentImage isEqual: 
     [UIImage imageNamed:@"icon_ImageBox_disabled.png"]]) 
{ 
    NSLog("is the same image"); 
} 

Любое из вас знает, почему это не работает или почему, когда я сравниваю одно и то же изображение, не работает?

+0

гарантировано ли образы иметь такое же имя, или вы ищете для визуального сравнения? –

+0

Я тестирую код, и у них одинаковое изображение – user2924482

+0

У меня такое ощущение, что 'isEqual' для изображений просто проверяет, равны ли два указателя, и ничто не гарантирует, что' imageNamed' вернет тот же объект с тем же именем. Это может быть, но не обязательно. Попробуйте напечатать указатели с помощью 'NSLog (@"% p ", myButton.currentImage)'. – user3386109

ответ

3

Реализация по умолчанию только сравнивает указатели.

UIButton *myButton = sender; 

NSData *data1 = UIImagePNGRepresentation(myButton.currentImage); 
NSData *data2 = UIImagePNGRepresentation([UIImage imageNamed:@"icon_ImageBox_disabled.png""]); 

if ([data1 isEqual:data2]) 
{ 
    NSLog(@"is the same image"); 
}else{  
    NSLog(@"is not the same image"); 
}