iphone – 在本地化故事板时从正确的包中加载图像

iphone – 在本地化故事板时从正确的包中加载图像,第1张

概述我正在尝试为用户添加一个选项,以便在阿拉伯语和阿拉伯语之间切换.应用程序内部的英语语言(无需重新设置整个iPhone的语言),我设法在AppDelegate.m文件中使用此方法正确执行: -(void)switchTolanguage:(NSString *)lang{ [[NSUserDefaults standardUserDefaults] setObject:[NSArray a 我正在尝试为用户添加一个选项,以便在阿拉伯语和阿拉伯语之间切换.应用程序内部的英语语言(无需重新设置整个iPhone的语言),我设法在AppDelegate.m文件中使用此方法正确执行:

-(voID)switchTolanguage:(Nsstring *)lang{    [[NSUserDefaults standardUserDefaults] setobject:[NSArray arrayWithObject:lang] forKey:@"AppleLanguages"];     NSBundle *bnd = [NSBundle bundleWithPath:[[NSBundle mainBundle]pathForResource:lang ofType:@"lproj" ]];     UIStoryboard *storyBoard;     storyBoard = [UIStoryboard storyboarDWithname:@"MainStoryboard" bundle:bnd];     UIVIEwController *initVIEwController = [storyBoard instantiateInitialVIEwController];     self.window.rootVIEwController = initVIEwController;}

我在应用程序的其中一个视图控制器上放置了两个UIbutton来测试方法,它运行良好:新加载(本地化)故事板中的所有UILabel,字符串等都显示正确的选定语言,但有一个例外:新加载的故事板不会(加载)其本地化图像,它会拍摄旧故事板(旧软件包)的图像,即如果应用程序当前在英文软件包上运行,并且用户点击了将语言切换为阿拉伯语的按钮,该应用程序将显示正确的阿拉伯语控件和字符串,但有英文图像,切换回英语一切都会好(英文字符串,标签和图像……)

这是我的故事板本地化的方式:

以下是每个图像的本地化方式:

当用户切换应用程序语言时,如何加载正确的包图像?

更新:
Here’s a link到我的意思是一个示例项目,运行示例,你会注意到当你从应用程序内部更改语言时,你会发现图像不可更改…
你还会注意到本地化的故事板没有在其设计编辑器中加载正确的图像……

附:不要为我使用此类场景切换语言的原因添加注释,因为这是客户要求.

解决方法 我有同样的问题:( ..和什么对我有用(对于这种场景切换语言)..

你有两种可能性..

1)如果要更改故事板(热更改),则必须修改每个故事板中的所有插座.在故事板中选择所需的图像(具有不同的名称),标签等.对我来说,使用本地化图像(相同名称) – 仅在重新启动应用程序后才能工作.
对于相同的img_name,我’尝试…从特定的lproj文件夹(languageBundle)“调用”特定的图像..但它在AppDelegate改变故事板时无效.

2)你只能拥有一个故事板……并且只能更改标签,图像等……(根据Localizable.strings),有点像这样…… https://stackoverflow.com/a/12149553/1702413
此外,您必须为图像设置不同的文件名(用于“热更改”)

我不知道是不是一个BUG ……或者是什么……

UPD

你有一个小项目@L_403_2@与…

如果您要更改故事板(与您一样),则在重新启动应用程序之前,您将拥有languageBundle的相同路径.所以..你必须在你的故事板中做正确的改变..

对于第二个..你可以从特定的languageBundle(lproj文件夹)更改/召回插座..

对于1)..我发现了一个“技巧”来覆盖languageBundle直到重启:

-(ID) initWithCoder:(NSCoder *)aDecoder{    self = [super initWithCoder:aDecoder];    if (self) {        NSArray* languages = [[NSUserDefaults standardUserDefaults]      objectForKey:@"AppleLanguages"];        Lang2 = [languages objectAtIndex:0]; //Nsstring    }    return self;}

并初始化奥特莱斯:

- (voID) vIEwWillAppear:(BOol)animated{    [super vIEwWillAppear:YES];      Nsstring *path;   if([Lang2 isEqualToString: @"ro"])    {        path = [[NSBundle mainBundle] pathForResource:@"ro" ofType:@"lproj"];        NSLog(@"enc ro");   }    else{        path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];        NSLog(@"enc en");    }    NSBundle* languageBundle = [NSBundle bundleWithPath:path];    //find and return the desired string    self.label.text=[languageBundle localizedStringForKey:@"kLabelText" value:@"" table:nil];    self.img.image = [UIImage imagenamed:[languageBundle localizedStringForKey:@"myImage" value:@"" table:nil]];}
总结

以上是内存溢出为你收集整理的iphone – 在本地化故事板时从正确的包中加载图像全部内容,希望文章能够帮你解决iphone – 在本地化故事板时从正确的包中加载图像所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1069207.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存