如何在 Xcode 中检查按钮图像

Posted

技术标签:

【中文标题】如何在 Xcode 中检查按钮图像【英文标题】:How to check a buttons image in Xcode 【发布时间】:2011-08-14 16:30:18 【问题描述】:

我目前正在尝试找出是否可以检查按钮使用的图像。

假设我有 image1 和 image2。

如果按钮图像是 image1,请执行此操作,如果按钮图像是 image2,请执行此操作。

但是 xcode 没有给我任何自动填充选项....

[m1 setImage:[UIImage imageNamed: @"Penguin.png"] forState:UIControlStateNormal];

这就是我设置图像的方式。但是我怎么知道它是 Penguin 还是 Penguin2?

【问题讨论】:

【参考方案1】:

刚刚使用此代码在图像的基础上进行按钮操作

- (IBAction)checkButtonClicked:(UIButton *)sender 

    if ([checkButton.currentImage isEqual:[UIImage imageNamed:@"checkbox.png"]]) 
        [checkButton setImage:[UIImage imageNamed:@"Checked.png"] forState:UIControlStateNormal];
//do some thing here for your image1

        else
    [checkButton setImage:[UIImage imageNamed:@"checkbox.png"] forState:UIControlStateNormal];
    //do some thing here for your image 2


【讨论】:

【参考方案2】:

Cocoa Touch 是围绕模型-视图-控制器模式设计的,因此您可能想尝试采用该模式。与其尝试从视图(按钮)中检索状态信息(所选企鹅),不如将其存储在控制器类的实例变量中。

您设置图像的代码可能如下所示:

self.currentImage = @"Penguin.png";
[m1 setImage:[UIImage imageNamed: currentImage] forState:UIControlStateNormal];

那么当你需要检查值时:

if ([@"Penguin.png" isEqual:self.currentImage]) 
    do something;

【讨论】:

【参考方案3】:

检查图像的相等性如下:

if ([[UIImage imageNamed:@"Penguin.png"] isEqual:m1.currentImage]) 
    // do something 

【讨论】:

我认为这行不通,因为您正在尝试比较来自同一个父亲的两个不同实例。它应该总是打印错误 只有当你从 [UIImage imageNamed:] 方法将 image 设置为 m1 时才有效,因为它在使用时一直保持连接,但如果你尝试通过 [[UIImage alloc] initWithContentsOfFile 设置:] 它总是错误的 没错。 +[UIImage imageNamed:] 缓存它加载的图像,所以它们都是一样的。实际上[UIImage imageNamed:@"Penguin.png" == m1.currentImage 应该可以工作。但前提是您始终使用 +imageNamed: 创建图像。【参考方案4】:

可以使用2种方法:

1.

UIImage *image = self.myButton.currentBackgroundImage;

2.

myImageView.image = [myButton backgroundImageForState:myButton.state];

【讨论】:

【参考方案5】:
UIImage *img=[(UIButton *) sender currentImage];   

if(img == [UIImage imageNamed:@"edit"])
  
    //If do something
 `

试试这个希望它会起作用

【讨论】:

如果不起作用,请添加@"edit.png" 或哪种格式的图像。对我来说它工作正常【参考方案6】:

在 Swift 中也可以

ios 8+

if button.currentImage?.isEqual(UIImage(named: "Penguin.png")) 
        //do something here
    

iOS 7-

if timerButton.currentImage ==  UIImage(named: "Penguin.png") 
        //do something here
    

【讨论】:

以上是关于如何在 Xcode 中检查按钮图像的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 4.1 中使用界面生成器时如何在按钮后面发送图像背景

按下 xcode 7 / Swift 2 时如何更改按钮的图像? [复制]

Xcode (Swift) - 如何在按钮上存储图像文件的名称

如何设置按钮的背景颜色 - xcode

如何获取 xcode 默认图像

如何在 Xcode 13 中使用图像文字