Works on iPhone Simulator but not on device

2020-02-12 07:23发布

问题:

Here I addsubviews (UIImageViews) it all works on the simulator but not on the device (iOS 4.1) wtf!?

- (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];
}

回答1:

  1. Make sure you write the correct file names, iOS is case sensitive, simulator is not.
  2. Make sure you have the proper retina files if you test on iPhone4


回答2:

I found the answer in the documentation:

Case-sensitivity: iPhone OS uses a case-sensitive file system, unlike the Simulator which uses a case-insensitive file system by default. Make sure the case-sensitivity of resources accessed within code matches the filename case-sensitivity.

For example, if our filename is "YourExampleImage.png":

Good: [UIImage imageNamed:@"YourExampleImage.png"]

Bad: [UIImage imageNamed:@"YourExampleImage.PNG"]

Bad: [UIImage imageNamed:@"yourexampleimage.png"]

So I just have to ensure my image names are the same case as my resources. So in my case I should of put 5Chip instead of 5chip.



回答3:

You are going to use your image, names only. Not with image extension. You should use the full image name as

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

Make sure image name is the be same as you stored it in the resource folder.