Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 图像命名与定位问题_Ios_Localization_Uiimage - Fatal编程技术网

Ios 图像命名与定位问题

Ios 图像命名与定位问题,ios,localization,uiimage,Ios,Localization,Uiimage,我已经通过Xcode本地化了我的图像,所有的图像都在正确的lproj文件夹中 然而,当我使用imageNamed时,我没有得到正确的图像,但是即使我更改了语言,我仍然会得到默认图像 _myImageView.image = [UIImage imageNamed:@"image_name"]; 这种问题让我浪费了一些时间,但后来我意识到这是一个错误的问题,我希望能为你节省宝贵的时间 如果您切换了语言,而图像没有使用新语言,那是因为缓存了图像。文档很简单: 此方法在系统缓存中查找具有指定名称的图

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

然而,当我使用imageNamed时,我没有得到正确的图像,但是即使我更改了语言,我仍然会得到默认图像

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

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

如果您切换了语言,而图像没有使用新语言,那是因为缓存了图像。文档很简单:

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

因此,当您切换语言并向缓存请求相同的名称时,您将得到旧图像!就这样。:)

而不是:

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


和项目中的任何其他资源一样,使用Localizable.strings文件对图像名称进行本地化。

能否将获取图像的代码放在此处。签出:它表示首先查看资源。您是否有可能将图像副本未定位到资源中?幸运。是的,我很害怕,我检查了好几次。检查答案(顺便说一句;)我知道有这个选择,但我认为这需要更多的时间。您必须像第一个解决方案中那样准备图像,但随后必须在每个localizable.strings中放入一个新行。如果你有n个图像和m种语言,那就是n*m行。我同意这主要是复制/粘贴,但这是更多的工作。这是更多的工作,但它是正确的和推荐的方式:-)我不确定这是推荐的方式。事实上,苹果的文档似乎建议将本地化图像放在适当的文件夹中。有一个选项可以将图像本地化。只需选择它并单击文件检查中的本地化是,这就是我所做的。我还没有自己将图像放入lproj文件夹中,所以现在的问题是,如何重置缓存…(我尝试清理构建,甚至重置模拟器,并删除派生数据。)我最终通过删除“卡住”的本地化中的一个图像获得了它。最后,图像被重新加载。
NSString *imageName = NSLocalizedString(@"image_name", @"image_name");
_myImageView.image = [UIImage imageNamed:imageName];