我正在尝试将图像与按钮图像进行比较,但我的代码无法满足此要求。我在这做错了什么?请帮帮我。
NSString *btnImage;
UIButton * sharebutton;
btnImage = @"arrow.png";
[sharebutton setImage:[UIImage imageNamed: btnImage] forState:UIControlStateNormal];
if ([sharebutton.imageView.image isEqual:[UIImage imageNamed:@"arrow.png"]])
{
NSLog(@"ok");
}
else
{
NSLog(@"else");
}
答案 0 :(得分:0)
if (sharebutton.currentImage == UIImage(named: "arrow.png")) {
}
你需要把它转换成obj-c但我想你会得到它。 :)
答案 1 :(得分:0)
如果要将按钮图像与其他图像名称进行比较,请按以下方式设置按钮图像:
sharebutton.setImage(UIImage(named: "arrow.png"), forState: UIControlState.Normal)
请记住,此处有一件事没有为按钮设置背景图片。
现在,您可以通过以下方式将按钮图像与其他图像进行比较:
if (sharebutton.currentImage?.isEqual(UIImage(named: "arrow.png")) != nil) {
println("YES")
} else {
println("NO")
}
答案 2 :(得分:0)
UIImage *image = [sharebutton imageForState:UIControlStateNormal];
if ([image isEqual:[UIImage imageNamed:@"arrow.png"]]) {
}
这样做,你可以解决它。
答案 3 :(得分:0)
这就是我正在使用的:
NSData *leftImageData = UIImagePNGRepresentation([sharebutton imageForState:UIControlStateNormal]);
//take note that using `imageForState:` only works if you set your image using `setImage:forState:`
//if you are using `setBackgroundImage:forState:`, `[shareButton currentBackgroundImage]` is what you need.
NSData *rightImageData = UIImagePNGRepresentation([UIImage imageNamed:@"arrow.png"]);
if ([leftImageData isEqualToData:rightImageData])
{
//same
}
else
{
//not same
}
答案 4 :(得分:0)
出于性能原因,我会比较文件名而不是创建更昂贵的临时图像
NSString *btnImage;
UIButton *sharebutton;
btnImage = @"arrow.png";
[sharebutton setImage:[UIImage imageNamed: btnImage] forState:UIControlStateNormal];
if ([btnImage isEqualToString:@"arrow.png"])
{
NSLog(@"ok");
}
else
{
NSLog(@"else");
}
当然,这需要保持变量btnImage
始终保持当前文件名