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

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

假设我有 image1 和 image2。

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

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

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

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

【问题讨论】:

    标签: ios cocoa-touch uibutton


    【解决方案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
              }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-12-09
            • 2017-08-22
            • 2015-02-15
            • 2018-02-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多