【问题标题】:Objective C/XCode - Image in ImageView not recognised by XcodeObjective C/XCode - Xcode 无法识别 ImageView 中的图像
【发布时间】:2017-12-07 10:24:36
【问题描述】:

我正在开发一个简单的计算器来计算视图中 3 张图像的价格。这些图像存储在图像视图中。可以使用按钮 1-6 等更改每个图像视图中的图像。价格显示在底部的标签上。

我正在使用 if 语句,如果 xyz imageview 中的图像是 @"zyx",则将价格设置为 yzx。

我知道计算器可以工作,因为计算器总是采用“else”值(即使我为 else 值设置的价格发生了变化)

if(
   self.topimage.image == [UIImage imageNamed:@"image.png"]){

    self.TopImageView.Price = 200;
}
else if(
        self.topimage.image == [UIImage imageNamed:@"slacks.png"]){

    self.TopImageView.Price = 400;
}
else {
    self.TopImageView.Price = 9;

}

Xcode 无法识别 imageview 中的图像何时等于任何名称的图像 / 不会更新价格。

我也试过直接从数组中提取图像而不是命名它:

 if(
       self.topimage.image == [UIImage imageNamed:[self.imagesArray objectAtIndex: 1]]){

    self.TopImageView.Price = 200;
}

标签上的价格仍然没有变化。我假设这是因为 imageview 的价格没有变化。

标签上的价格是:

_totalprice = (self.TopImageView.Price + self.MiddleImageView.Price + self.BottomImageView.Price);

    self.Pricelabel.text = [NSString stringWithFormat:@"£%.0f", _totalprice];

所有属性都已定义,程序运行时没有错误。计算器本身可以正常工作并正确总结我的 if 子句中的“else”值。所有图像都在 xcode 中的“支持文件”下,我知道拉取它们不会有问题,因为当从数组中拉取它们时它们会显示在应用程序上。

例如,这里是我在一个按钮下的所有代码:

- (IBAction)Button2:(UIButton *)sender {

    self.clothesindex = self.clothesindex - 1;

    if (self.clothesindex == (-1)) {
        self.clothesindex = 2;
    }
    self.topimage.image = [UIImage imageNamed:[self.imagesArray objectAtIndex: self.clothesindex ]];




    if(
       self.topimage.image == [UIImage imageNamed:@"image.png"]){

        self.TopImageView.Price = 200;
    }
    else if(
            self.topimage.image == [UIImage imageNamed:@"slacks.png"]){

        self.TopImageView.Price = 400;
    }
    else {
        self.TopImageView.Price = 9;

    }

    _totalprice = (self.TopImageView.Price + self.MiddleImageView.Price + self.BottomImageView.Price);

    self.Pricelabel.text = [NSString stringWithFormat:@"£%.0f", _totalprice];
}

其中“top image”是图像视图,“TopImageView”是一个类,“Price”是该类的属性。

任何帮助将不胜感激。

【问题讨论】:

    标签: ios objective-c xcode image imageview


    【解决方案1】:

    你应该这样做:

    NSString* imageName = [self.imagesArray objectAtIndex: self.clothesindex ];
    
    if([imageName isEqualToString:@"image.png"]){
    
        self.TopImageView.Price = 200;
    }
    else if([imageName isEqualToString:@"slacks.png"]){
    
        self.TopImageView.Price = 400;
    }
    else {
        self.TopImageView.Price = 9;
    
    }
    

    【讨论】:

      【解决方案2】:

      要比较图像,您可以使用此方法,

      - (BOOL)image:(UIImage *)image1 isEqualTo:(UIImage *)image2
      {
          NSData *data1 = UIImagePNGRepresentation(image1);
          NSData *data2 = UIImagePNGRepresentation(image2);
      
          return [data1 isEqual:data2];
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-17
        • 1970-01-01
        • 1970-01-01
        • 2018-05-02
        • 1970-01-01
        • 1970-01-01
        • 2016-03-17
        相关资源
        最近更新 更多