在 Swift UITest 中检测从右到左的语言

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

我正在尝试设置我的 UITests 以进行本地化。特别是对于 阿拉伯语 和任何其他 从右到左 (RTL) 语言。

在我的例子中,我有一个

swipe(direction: SwipeDirection)
函数,其值为
SwipeDirection
(
.up, .down, .left, .right
)。

如果我现在想删除一个单元格,我只需执行

cell.swipe(.left)
,我的
UITest
就会删除该单元格。由于 UI 在 RTL 语言 上翻转,因此必须更改为
cell.swipe(.right)

我找不到任何检测当前设备语言的方法,也不是

UILayoutDirection

我已经尝试像这样检查它:

let isLeftToRight = UIView.userInterfaceLayoutDirection(for: UIView().semanticContentAttribute) == .leftToRight

还有

let isLeftToRight = UIApplication.shared.userInterfaceLayoutDirection == .leftToRight

但无论语言如何,他们都总是返回

true
。 还有其他方法可以检查我不知道的当前
UILayoutDirection
吗?

谢谢!

ios swift xcode automated-tests xcode-ui-testing
2个回答
5
投票

在文档中并不难找到

let locale = NSLocale.autoupdatingCurrent
let lang = locale.languageCode
let direction = NSLocale.characterDirection(forLanguage:lang!)

1
投票

经过 Apple 的一些弃用,现在这已成为 SwiftUI 中的有效解决方案。 声明环境变量用途:

@Environment(\.layoutDirection) private var layoutDirection: LayoutDirection

然后使用(私有)varlayoutDirection。

© www.soinside.com 2019 - 2024. All rights reserved.