为 iOS 创建从右到左的用户界面

问题描述 投票:0回答:2

根据苹果文档 “iOS 不会自动镜像控件,因此如果您希望 iOS 应用程序具有此行为,请对控件进行子类化并重写绘图方法。”

当用户在主屏幕中选择阿拉伯语或希伯来语时,我想镜像我的整个用户界面。我正在寻找相同的教程和文档,但没有任何帮助。

请找出我到目前为止所做的事情: 我使用的是 Xcode 6.1,应用程序的目标是从 iOS 7 到 iOS 8.1。 自动布局已启用,并且未使用左侧或右侧约束。我仅使用前导或尾随约束。 在项目设置中启用了基本国际化,并且在本地化中添加了语言。但是当我在设备中运行应用程序并将设备语言和区域设置为阿拉伯语时,我无法获得镜像 UI。我是否需要在代码中执行任何操作才能获得镜像 UI? 支持基于 RTL 的 UI 的最佳方式是什么?如何子类化控件并重写绘图方法?

我的应用程序的示例屏幕截图。 enter image description here

ios objective-c iphone xcode
2个回答
3
投票

我刚刚从 Apple 文档中找到了一种简单的方法,而不是使用 2 个 RTL 和 LTR 语言的故事板。

  1. 首先在项目设置中启用Base国际化
  2. 添加您的语言 - 就我而言,我添加了阿拉伯语和希伯来语
  3. xCode 将本地化您的故事板,您可以看到不同语言的不同故事板字符串
  4. 在新创建的字符串文件中更改标签文本。就我而言,我更改了阿拉伯语和希伯来语字符串文件
  5. 使用AutoLayout来设计整个UI。
  6. 不要使用左或右约束。而不是仅使用前导和尾随约束
  7. 在主函数中添加以下代码并在模拟器中运行应用程序
NSArray* languages = [NSArray arrayWithObjects:@"ar", nil]; 
[[NSUserDefaults standardUserDefaults] setObject:languages forKey:@"AppleLanguages"];

您的应用程序现在将适用于具有镜像 UI 的 RTL 语言,而无需 2 个故事板。 注意:如果您没有正确设置自动布局约束,它将无法工作。然而,由于新的屏幕,您必须学习使用自动布局。


0
投票

在斯威夫特

let languages = ["ar"]
UserDefaults.standard.set(languages, forKey: "AppleLanguages")
© www.soinside.com 2019 - 2024. All rights reserved.