在iPhone模拟器上可以运行但在设备上不能运行

6

我在这里添加子视图(UIImageViews),在模拟器上都可以工作,但在设备上(iOS 4.1)却不能工作,真是太离谱了!

- (void)addChips:(int)value {
UIImage *chipImage;
switch (value) {
    case 5:
        chipImage = [UIImage imageNamed:@"5chip"];
        break;
    case 25:
        chipImage = [UIImage imageNamed:@"25chip"];
        break;
    case 100:
        chipImage = [UIImage imageNamed:@"100chip"];
        break;
    case 500:
        chipImage = [UIImage imageNamed:@"500chip"];
        break;
    default:
        break;
}

int chipCount = [chipsOnBet count];
UIImageView *addChip = [[UIImageView alloc] initWithImage:chipImage];
addChip.opaque = YES;
addChip.frame = CGRectMake((kStackOffset * chipCount) + 131, 268, 57, 57);
[self.view addSubview:addChip];
[chipsOnBet addObject:addChip];
[addChip release];
}
3个回答

19
  1. 请确保您输入的文件名正确,iOS 区分大小写,模拟器则不区分大小写。
  2. 如果您在 iPhone4 上进行测试,请确保拥有适当的视网膜(retina)文件。

大小写问题已经为我解决了一个类似的问题 - 您可以使用lowercaseString或uppercaseString函数使它变得统一。谢谢Alin。 - Brett

3
我在文档中找到了答案:
区分大小写: iPhone OS使用区分大小写的文件系统,而模拟器默认使用不区分大小写的文件系统。确保代码内访问的资源的大小写匹配文件名的大小写。
例如,如果我们的文件名是“YourExampleImage.png”:
正确示例:[UIImage imageNamed:@"YourExampleImage.png"]
错误示例:[UIImage imageNamed:@"YourExampleImage.PNG"] 错误示例:[UIImage imageNamed:@"yourexampleimage.png"]
所以我只需要确保我的图像名称与我的资源的大小写相同。因此,在我的情况下,我应该使用5Chip而不是5chip。

1
模拟器是否区分大小写应该取决于您的 Mac 文件系统。您可以设置 HFS+ 区分大小写,但默认情况下它是不区分大小写但区分大小写的…… - DarkDust

0

您将仅使用图像名称,而非带有图像扩展名。应使用完整的图像名称作为。

[UIImage imageNamed:@"a.png"];

确保图像名称与您在资源文件夹中存储的名称相同。


自从iOS4推出以来,如果您引用项目中加载的资源,则无需放置文件扩展名。 - Daniel Granger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接