swift - 选择语言时如何更改应用程序布局 RTL 阿拉伯语 SwiftUI
问题描述
当用户选择阿拉伯语时,我试图更改应用程序布局 RTL。我知道 .environment(.layoutDirection, .rightToLeft) 是解决方案之一,但它不会改变所有应用程序。我如何控制所有视图。有没有办法以编程方式更改?
解决方案
class LanguageService: ObservableObject {
static let shared = LanguageService()
private init() { }
@Published var selectedLanguage = Language.english
enum Language: String {
case english
case turkish
case arabic
var isRTL: Bool {
self == .arabic
}
}
}
对于您的 RootView;
RootView()
.environment(\.layoutDirection,
LanguageService.shared.selectedLanguage.isRTL ? .rightToLeft : .leftToRight
)
.environmentObject(LanguageService.shared)
你可以尝试类似的东西吗?
推荐阅读
- mongodb - mongoDB 找到一个引发警报的查询
- sql - 当列数发生变化时将数据插入 SQLite 表的动态方式
- c# - 统一库函数总是返回 0
- firebase - Firestore DocumentSnapshot 存在安全规则问题
- javascript - react-router-dom 中带有 BrowserRouter 的动态基本名称
- go - 在 Golang 中管理多种返回类型
- python - 在python中获取IP地址的所有FQDN
- python - Python unittest assert_called_with() false,尽管调用相同
- javascript - 如何从 url 中提取 jquery 参数?
- mysql - 没有@的Azure mysql用户名