我将如何比较 UIButton backgroundImage 标题?

Posted

技术标签:

【中文标题】我将如何比较 UIButton backgroundImage 标题?【英文标题】:How would I compare UIButton backgroundImage title? 【发布时间】:2011-04-01 09:22:45 【问题描述】:

在 UIButton 上我设置了这样的背景图片

[twitterButton setBackgroundImage:twitterImage forState:UIControlStateNormal];

twitterImage 是 UIImage 类型

现在在代码中点击任何按钮的某处,我使用标签值设置了 twitterButton 图像

[twitterButton setBackgroundImage:twitterImage1 forState:UIControlStateNormal];

我的问题是如何比较 twitterButton 的图像?

这种情况不起作用if([twitterbutton.imageView.image isEqual:twitterImage1])

请帮忙

【问题讨论】:

【参考方案1】:

尝试与 backgroundImageForState: 方法返回的 UIImage 进行比较,而不是 UIButton imageView 的 image 属性...

if ([[twitterButton backgroundImageForState:UIControlStateNormal] isEqual:twitterImage1])

即,

if ([[twitterButton backgroundImageForState:UIControlStateNormal] isEqual:[UIImage imageNamed@"myImage.png"]])
  // Button has a background image named 'myImage.png'
else
  // Button has not a background image named 'myImage.png'

请参阅UIButton class reference 了解更多信息。

【讨论】:

刚刚试过这个 if([[twitterBtn backgroundImageForState:UIControlStateNormal]isEqual:twitterImage1]) .....不工作:( 您正在加载多少个物理图像实例?如果在多个地方设置了同一个对象实例,那么这应该可以工作。否则你将不得不比较图像数据...... 使用标签我创建了一个实例。所有属性都像我可以更改图像一样工作...禁用...启用...但只有背景图像比较不起作用 如果是同一个实例,您可以尝试 [twitterButton backgroundImageForState:UIControlStateNormal] == twitterImage1,尽管我认为默认的 isEqual 实现会进行指针比较。值得一试。 由于紧急需求,我已通过标志修复了此问题。现在比较布尔标志而不是图像:)【参考方案2】:

你不能比较 UIButton 的 backgroundImage。你使用一些引用变量设置 backgroundImage

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIButton_Class/UIButton/UIButton.html

【讨论】:

【参考方案3】:

尝试使用 UIButton 的 currentBackgroundImage 属性。这将为您提供当前的背景图像.. UIButton Reference

【讨论】:

我试过这个 if([twitterBtn.currentBackgroundImage isEqual:@"btn_twitter_normal_small1.png"]) 它不工作.. 还有其他方法可以使用 currentBackgroundImage 属性吗? 记住它返回一个 UIImage 所以你必须检查它而不是图像名称。如果这也不起作用,请尝试 isEqualTo: 你可以试试[twitterBtn.currentBackgroundImage isEqual:twitterImage1] 我的上帝,我被严重卡住了......好吧 UIImage 没有响应'isEqualTo:'......并根据你的建议尝试了第二个选项比较 UIImage 类型而不是 btn_twitter_normal_small1.png .. . 它仍然无法正常工作:( 哦,这应该有效...您能检查一下您是否能够访问 backgroundImage。检查是否正确获取。【参考方案4】:

我认为这很昂贵,但您可以尝试将图像转换为 nsdata,然后使用 isEqualToData。

编辑

NSData *data1=UIImagePNGRepresentation([twitterButton backgroundImageForState:UIControlStateNormal]);
NSData *data2=UIImagePNGRepresentation(anotherUIImage);

if([data1 isEqualToData:data2])


【讨论】:

我将如何比较 NSData.. 我知道情况会是这样的.. if(UIIMagePng......) ..... 但在这种情况下我将如何加载背景按钮图片? 感谢您的回复...由于紧急要求,我已通过标志解决了此问题。现在比较布尔标志而不是图像:) 我知道你有压力时的感觉 :) 谢谢 Jorge... 但想稍后解决这个问题... 等我有空 :)

以上是关于我将如何比较 UIButton backgroundImage 标题?的主要内容,如果未能解决你的问题,请参考以下文章

如何将设置为 uitextfield 的框架更改为 uibutton

如何向 UIButton 添加阴影?

Xcode:检查 UIButton 是不是隐藏,使用 NSUserDefaults

如何将 UIButton 转换为圆形?

iOS开发中如何设置UIButton的Aspect Fit背景图片

UIControlEventTouchDragExit 在距离 UIButton 100 像素时触发