3

这是我在这里的第一个问题:-)

我有一个图像 icon_new.png 已本地化为 3 种语言。我需要在运行时使用这样的东西加载它:

NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"icon_new.png"];
UIImage *img = [UIImage imageWithContentsOfFile:path];

上面的问题是它适用于非本地化图像,但对于本地化图像,它们的真实路径实际上附加了 en.lproj、zh-Hans.lproj 或其他文件夹名称,具体取决于本地化中包含的语言。

现在我可以检查当前的语言环境并相应地附加路径:

// This path would work for image that's localized - for English version of it.
NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"en.lproj/icon_new.png"];

但是我想知道是否有自动的方法来做到这一点?就像应用程序从正确的语言环境路径加载整个 UI .xib 文件一样,所以基本上我只会指定图像名称而不是完整路径,并获得正确的本地化版本。

在此先感谢您的帮助!

4

1 回答 1

2

使用NSBundle's -pathForResource:ofType:,它首先搜索主目录,如果在该目录中找不到资源,则检查相应的本地化目录。

NSString *path = [[NSBundle mainBundle] pathForResource:@"icon_new" ofType:@"png"];
于 2013-04-05T23:38:29.580 回答