I18nManager
I18nManager
模块提供了用于管理对从右到左 (RTL) 布局支持的实用工具,适用于阿拉伯语、希伯来语等语言。它提供了控制 RTL 行为和检查当前布局方向的方法。
示例
根据 RTL 更改位置和动画
如果您绝对定位元素以与其他 flexbox 元素对齐,它们可能不会在 RTL 语言中对齐。使用 isRTL
可以用于调整对齐或动画。
开发期间
参考
属性
isRTL
typescript
static isRTL: boolean;
一个布尔值,指示应用程序当前是否处于 RTL 布局模式。
isRTL
的值由以下逻辑确定:
- 如果
forceRTL
为true
,则isRTL
返回true
- 如果
allowRTL
为false
,则isRTL
返回false
- 否则,在以下情况下
isRTL
将为true
:- iOS
- 设备上用户偏好的语言是 RTL 语言
- 应用程序定义的本地化包含用户选择的语言(如 Xcode 项目文件 (
knownRegions = (...)
) 中定义)
- Android
- 设备上用户偏好的语言是 RTL 语言
- 应用程序的
AndroidManifest.xml
在<application>
元素上定义了android:supportsRTL="true"
- iOS
doLeftAndRightSwapInRTL
typescript
static doLeftAndRightSwapInRTL: boolean;
一个布尔值,指示在 RTL 模式下是否应自动交换左右样式属性。启用时,在 RTL 布局中,左变为右,右变为左。
方法
allowRTL()
typescript
static allowRTL: (allowRTL: boolean) => void;
启用或禁用应用程序的 RTL 布局支持。
参数
allowRTL
(布尔值):是否允许 RTL 布局
重要注意事项
- 更改将在下次应用程序启动时生效,而不是立即生效
- 此设置在应用程序重启后仍然保留
forceRTL()
typescript
static forceRTL: (forced: boolean) => void;
无论设备语言设置如何,强制应用程序使用 RTL 布局。这主要在开发过程中测试 RTL 布局时很有用。
避免在生产应用程序中强制使用 RTL,因为它需要完全重启应用程序才能生效,这会带来糟糕的用户体验。
参数
forced
(布尔值):是否强制 RTL 布局
重要注意事项
- 更改将在下次应用程序启动时完全生效,而不是立即生效
- 此设置在应用程序重启后仍然保留
- 仅用于开发和测试。在生产中,您应该要么完全禁止 RTL,要么适当地处理它(参见
isRTL
)
swapLeftAndRightInRTL()
typescript
static swapLeftAndRightInRTL: (swapLeftAndRight: boolean) => void;
在 RTL 模式下交换左右样式属性。启用时,在 RTL 布局中,左变为右,右变为左。不影响 isRTL
的值。