首页 > 解决方案 > 选择语言时如何更改应用程序布局 RTL 阿拉伯语 SwiftUI

问题描述

当用户选择阿拉伯语时,我试图更改应用程序布局 RTL。我知道 .environment(.layoutDirection, .rightToLeft) 是解决方案之一,但它不会改变所有应用程序。我如何控制所有视图。有没有办法以编程方式更改?

在此处输入图像描述

标签: swiftlayoutswiftui

解决方案


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)

你可以尝试类似的东西吗?


推荐阅读