【问题标题】:Image shows in the iPad simulator but not the device图像显示在 iPad 模拟器中,但不显示在设备中
【发布时间】:2012-06-24 03:25:45
【问题描述】:

我有一个小 png,我正在将它添加到一个视图中,我很确定我以前工作过,但突然停止在 iPad 本身上工作,同时继续在 iPad 模拟器上正常工作。

这是我用来将图像添加到视图中的代码...

  UIImageView *bottomResizer = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"resizeLine.png"]];
  bottomResizer.center = CGPointMake(bottomResizer.center.x, bottomResizer.center.y+self.frame.size.height-12);
  bottomResizer.tag = 301;
  [self addSubview:bottomResizer]; 
  [bottomResizer release]; 

这发生在 UIGestureRecognizerStateBegan 事件中。以下代码在 touchesEnded 事件中删除图像,即使您看不到它也不会出现任何错误。

 NSArray *subViews = [self subviews];
 int count = [subViews count];
 for (int i =count-1; i>=0; i--) {
     if([[subViews objectAtIndex:i] tag] == 301) {
         [[subViews objectAtIndex:i] removeFromSuperview];

     }
 }

我不认为这是我在代码中更改的任何内容,因为它可以在模拟器中运行。不知道下一步该去哪里寻找问题。我已经重置了模拟器,看看它是否会在重置后中断。我也清理了项目。

谢谢。

约翰

【问题讨论】:

  • 仔细检查以确保 resizeLine.png 没有损坏。有时图像可能会稍微损坏,但仍然可以在模拟器上运行,但不能在设备上运行。尝试插入新图片,看看是否遇到同样的问题。
  • 如果我使用其他图像,它可以正常工作。谢谢,图像已损坏。请参阅我对 logancautrell 回答的评论。有什么建议可以解决吗?

标签: xcode image ipad ios-simulator


【解决方案1】:

在这一行之后放一个断点UIImageView *bottomResizer = [[UIImageView alloc]...

然后在控制台“po [bottomResizer image]”

如果它是 nil,那么要么资源没有被正确复制到包中,要么你可能有一个设备无法加载的损坏图像。

【讨论】:

  • 果然图片在ipad上是nil但模拟器上不是。关于如何解决问题的任何建议。阅读您的帖子后,我在绘图程序中打开了 png 并将其保存到一个新文件中以替换我项目中的那个。我还重置了 iPad……No Joy。
  • 做到了!我转换为gif并返回为png。谢谢!!
  • 如果(重新)转换图像格式并再次返回并不能解决问题。而且您知道您的图像没有被复制到包中,但是您的文件被添加到目标并出现在“复制包资源”中并在您的测试中返回 nil,您将如何解决这个问题?
  • 从项目中删除文件并重新添加。
猜你喜欢
  • 1970-01-01
  • 2011-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-23
相关资源
最近更新 更多