【问题标题】:imageNamed and localization issueimageNamed 和本地化问题
【发布时间】:2013-11-18 12:08:36
【问题描述】:

我已经通过 Xcode 本地化了我的图像,并且所有图像都在正确的 lproj 文件夹中。

但是,当我使用 imageNamed 时,我没有得到正确的图像,但即使我更改语言,我也会继续获得默认图像。

_myImageView.image = [UIImage imageNamed:@"image_name"];

【问题讨论】:

  • 能否把获取图片的代码放在这里。
  • 签出这个:stackoverflow.com/a/3788068/1152596 它说首先查看资源。您是否有可能将图像副本复制到未本地化的资源中?运气。
  • 是的,我害怕那个,我检查了好几次。检查答案顺便说一句;)

标签: ios localization uiimage


【解决方案1】:

这种问题让我浪费了一些时间,但后来我意识到这是一个错误的问题,希望能节省您宝贵的时间。

如果您切换语言并且图像不是新语言,那是因为缓存的图像。文档很简单:

此方法在系统缓存中查找具有指定名称的图像对象,如果存在则返回该对象

因此,当您切换语言并要求缓存具有相同的名称时,您将获得旧图像!就是这样。 :)

【讨论】:

  • 所以现在的问题是,如何重置该缓存...(我尝试清理构建,甚至重置模拟器,并删除派生数据。)我终于通过在本地化中删除一个图像得到它它被“卡住”了。然后图像终于重新加载了。
【解决方案2】:

代替:

_myImageView.image = [UIImage imageNamed:@"image_name"];

使用:

NSString *imageName = NSLocalizedString(@"image_name", @"image_name");
_myImageView.image = [UIImage imageNamed:imageName];

并像项目中的任何其他资源一样使用 Localizable.strings 文件本地化您的图像名称。

【讨论】:

  • 我知道有这个选项,但我认为这需要更多时间。您必须像第一个解决方案一样准备图像,但是您必须在每个 localizable.strings 中放入一个新行。如果你有 n 张图片和 m 种语言,那就是 n*m 行。我同意这主要是复制/粘贴,但工作量更大。
  • 这需要更多的工作,但它是正确且推荐的方法:-)
  • 我不确定这是推荐的方式。事实上,Apple 文档似乎建议将本地化图像放在适当的文件夹中。
  • 有一个本地化图像的选项。只需选择它并在文件检查器中单击本地化
  • 是的,我就是这么做的。我没有自己把图片放到 lproj 文件夹中
猜你喜欢
  • 1970-01-01
  • 2011-02-07
  • 2010-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-26
  • 1970-01-01
相关资源
最近更新 更多