20

iOS バージョン 4.+ からオブジェクトのメソッドimageNamedを使用UIImageすると、ファイル拡張子が不要になるというリファレンスを読みました。

UIImageクラスリファレンスから:

特別な考慮事項。

iOS 4 以降では、ファイル名拡張子を指定するためにファイルの名前は必要ありません。iOS 4 より前では、ファイル名拡張子を指定する必要があります。

しかし、これはPNGファイルでしか機能しないようです。

私のコードが次の場合:

[UIImage imageNamed:@"test"];
  • ファイルがtest.png
  • の場合、画像は読み込まれませんtest.jpg

動的な画像の読み込みを維持する必要があるため、私にとっては大きな問題です (読み込みたい画像が か かは実行時にわかりませんpng) jpg

助けてくれますか?
ありがとう。

4

2 に答える 2

0

これらの画像をアプリにバンドルしている場合は、その拡張子を知っておく必要があります。

それらをオンライン ソースから取得し、それらを NSData として持っている場合は、ここでこのコードを使用して型を判別できます。

+ (NSString *)contentTypeForImageData:(NSData *)data {
    uint8_t c;
    [data getBytes:&c length:1];

    switch (c) {
    case 0xFF:
        return @"image/jpeg";
    case 0x89:
        return @"image/png";
    case 0x47:
        return @"image/gif";
    case 0x49:
    case 0x4D:
        return @"image/tiff";
    }
    return nil;
}

この質問の一番の答えに従って。

于 2015-04-01T22:07:11.690 に答える