【问题标题】:Localized NIB not loading the localized version of image in XCode4本地化 NIB 未在 XCode4 中加载本地化版本的图像
【发布时间】:2012-01-25 11:54:06
【问题描述】:

我注意到 XCode 4.2 中的一个问题,其中一些本地化 NIB 无法从其各自的语言包中加载正确的图像。

在我的一个控制器中,我有几个图像视图。在英文版本中,我注意到一些图像视图会抓取应该加载到它们上的图像的法语版本。法语版本的 NIB 也会发生同样的情况。

我显然已经仔细检查了我的图像资源,并确认法国图像正确存储在“en.lproj”和“fr.lproj”文件夹中。

以前有人遇到过这个问题吗?最令人头疼的是每次我运行该项目时,无论是在模拟器中还是在实际手机中,图像似乎都在不停地翻转。我什至没有手动调用我的控制器来加载图像。所有图像都是通过 NIB 预设的。

【问题讨论】:

  • 同一张图片总是会出现这个问题吗?
  • 起初我以为是的。我尝试重新创建 NIB 并手动添加本地化图像。有一段时间,当我在 IB 中打开图像时,图像会在 NIB 中正常加载。一旦我运行该项目,模拟器/iPhone 构建只会正确加载一些图像。一旦我在 XCode 中打开受影响的 NIB,一些图像现在以法语显示(但其他图像视图不受影响)。受影响的图像视图也是随机的。我真的非常接近在我的代码中进行手动调用以加载正确的图像。 :-(
  • 您找到解决方案了吗?我有同样的问题:(
  • 我最终在我的 viewWillAppear 委托中手动编写加载方法。 :-(

标签: objective-c localization uiimage xcode4.2 nib


【解决方案1】:

如果您在将资源包含在构建中后对其进行了本地化,则该资源的未本地化版本将保留在构建的应用程序中。重建应用程序只会添加新文件并更新已编辑的文件,但不会删除已删除的文件。

要在模拟器中解决该问题,您可以打开 Organizer (Window > Organizer),选择 Projects 选项卡并删除项目的派生数据,然后重新构建。

要在您的设备上解决该问题,您可以删除应用程序,清理您的构建产品 (Product > Clean),然后重新构建。

【讨论】:

  • 嗨 Nicolas,我刚刚尝试了 Organizer > Projects > Delete derived data 方法。那没有用。我还多次从设备中删除了实际的应用程序(实际上我每次都在设备和模拟器中进行全新构建)。仍然没有运气:-(
  • 我只是好奇,如果我本地化一个NIB,从技术上讲,它也应该加载图像的本地化版本,对吧?即我应该看到我的笔尖加载法国图像的法国版本,对吗?
【解决方案2】:

我有同样的问题,我找到的唯一解决方案是删除图像本地化并加载它们。

UIImage *img = [UIImage imageNamed:NSLocalizedString (@"imageOne.png", @"Main Image")];

例如,在你的 Localizble.strings (Spanish) 中,你写:

"imageOne.png" = "imageOne_es.png";

对于Localizble.strings(英文)

"imageOne.png" = "imageOne_en.png";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 2012-06-10
    • 1970-01-01
    • 2012-12-19
    相关资源
    最近更新 更多