0

配列に画像を入力するには、以下のコードがあります。

NSString *fileName;
    myArray = [[NSMutableArray alloc] init];
    for(int i = 1; i < 285; i++) {
        fileName = [NSString stringWithFormat:@"Animation HD1.2 png sequence/HD1.2_%d.png", i];
        [myArray addObject:[UIImage imageNamed:fileName]];
        NSLog(@"Loaded image: %d", i);
    }

私のリソースフォルダには、これらの各画像の@2xバージョンがあります。網膜デバイス上の@2x画像を無視し、アレイに非@ 2x画像を取り込む方法は(プログラムで)ありますか?

編集1:

使用するコードを編集しましたNSData

  myArray = [[NSMutableArray alloc] init];
    for(int i = 1; i < 285; i++) {
        fileName = [NSString stringWithFormat:@"Animation HD1.2 png sequence/HD1.2_%d.png", i];
        NSData *fileData = [NSData dataWithContentsOfFile:fileName];
        UIImage *regularImage = [UIImage imageWithData:fileData];
        [myArray addObject:regularImage];
    }

falling.animationImages = MYArray;

これにより、次のエラーでアプリがクラッシュします*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'。NSDataオブジェクトを間違って使用していますか?

4

3 に答える 3

3

質問は「@2x画像の自動読み込みをバイパスするにはどうすればよいですか?」という質問になると思います。

あなたはそれがたどることができない道をたどる必要があります。NSData dataWithContentsOfFile:options:error:を使用して各ファイルの内容を渡すことができます。UIImage imageWithData:この方法でimageWithDataは、2xバージョンがあることは言うまでもなく、データがどこから来たのかわかりません。

于 2012-09-08T14:51:48.543 に答える
1

NSData手法は機能するはずですが、バンドルからパスを取得する必要があります。ファイル名をそのような文字列として指定することはできません。

試す:

filename = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"Animation HD1.2 png sequence/HD1.2_%d.png", i] ofType:nil];
于 2012-09-08T18:03:54.280 に答える
0

これを試して...

//This string will have @"@2x.png"

NSString *verificationString = [myString substringFromIndex:[myString length] - 7];
if(![verificationString isEqualToString:@"@2x.png"]) 
{
    //NOT EQUAL...
}
于 2012-09-08T14:47:50.733 に答える