1

キャッシュまたはドキュメントに保存されている画像に対して、デバイス修飾子 ~ipad、~iphone、@2x を利用する方法はありますか? 私が知る限り、ファイルがメインバンドルに保存されている場合にのみ機能します。

NSArray *cachePaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath = ([cachePaths count] > 0) ? [cachePaths objectAtIndex:0] : nil;
NSString *cacheResourcesPath = [cachePath stringByAppendingPathComponent:@"Resources"];

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *documentPath = ([documentPaths count] > 0) ? [documentPaths objectAtIndex:0] : nil;
NSString *documentsResourcesPath = [documentPath stringByAppendingPathComponent:@"Resources"];

    // SUCCESS (/caches/resources)
    UIImage *image = [UIImage imageWithContentsOfFile:[cacheResourcesPath stringByAppendingPathComponent:@"image~ipad.png"]];

    // FAIL (/caches/resources)
    UIImage *image = [UIImage imageWithContentsOfFile:[cacheResourcesPath stringByAppendingPathComponent:@"image.png"]];

    // SUCCESS (/documents)
    UIImage *image = [UIImage imageWithContentsOfFile:[documentsResourcesPath stringByAppendingPathComponent:@"image~ipad.png"]];

    // FAIL (/documents)
    UIImage *image = [UIImage imageWithContentsOfFile:[documentsResourcesPath stringByAppendingPathComponent:@"image.png"]];

    // SUCCESS (main bundle)
    UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image" ofType:@"png"]];

    // SUCCESS (main bundle)
    UIImage *image = [UIImage imageNamed:@"image"];
4

1 に答える 1

0

imageWithContentsOfFile:メソッドがファイル名を分析しないことは確かです。バンドルに含まれていない @2x 画像を読み込もうとしたときに、iPhone で同じ問題が発生しました。結局initWithCGImage:scale:orientation:、スケールを適切に設定できるように を使用する必要がありました。それを踏まえると、接尾辞を扱えるとは驚きです~ipad

于 2012-05-02T17:15:23.667 に答える