gpt4 book ai didi

ios - 如何强制 "Respect Language Direction"从 RTL 到 LTR,反之亦然

转载 作者:可可西里 更新时间:2023-11-01 03:49:02 25 4
gpt4 key购买 nike

我有一个使用自动布局的应用程序。

当用户选择他或她的设备电话语言时,该应用程序可以完美地切换 RTL 和 LTR 语言。所有文本均已本地化,并且语言说明有效。

我在应用程序中还有一个按钮,可以在不重新启动应用程序的情况下更改它的语言。这也很好用,所有文本都被替换了。

问题是,当用户从应用程序中更改语言时,具有讽刺意味的是,我预定义的约束中的“尊重语言方向”选项没有得到尊重。

有什么想法吗?

最佳答案

最终,我设法解决了这个问题。

我找不到强制更改 RTL - LTR 自动布局约束的方法,因此我决定为每个语言方向复制 2 个额外的 Storyboard。所以,实际上我的应用程序现在包含 3 个 Storyboard - Main.storyboard、StoryboardRTL.storyboard 和 StoryboardLTR.storyboard。

当从 iDevice 上的设置执行时,Main 处理语言方向的变化,RTL/LTR 有它自己的方向,以支持从应用程序内部更改应用程序语言。

当用户选择更改为 RTL 语言时,我在 UserDefaults 中设置所选语言:

    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"he", nil] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];

在我调用我在 AppDelegate 中编写的方法后,它会根据语言布局更改 Storyboard。

- (void)reloadStoryboard
{
UIStoryboard *storyboard;

switch ([AALanguageManager getCurrentLanguage]) {

case CurrentLanguageRTL:
storyboard = [UIStoryboard storyboardWithName:@"StoryboardRTL" bundle:[NSBundle mainBundle]];
break;
default:
storyboard = [UIStoryboard storyboardWithName:@"StoryboardLTR" bundle:[NSBundle mainBundle]];
break;
}

self.window.rootViewController = [storyboard instantiateInitialViewController];
[self.window makeKeyAndVisible];
}

这对用户来说就像应用重新启动一样,并显示具有 RTL/LTR 布局的正确 Storyboard。当用户再次重新启动应用程序时,所选语言已经设置好,并且显示主 Storyboard ,并根据所选语言进行所有正确的布局。

关于ios - 如何强制 "Respect Language Direction"从 RTL 到 LTR,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25378205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com