我知道SwiftUI会根据设备的系统语言来更改应用程序的方向。但是有没有办法忽略系统语言并强制应用始终为RTL或LTR?
Moj*_*ini 11
您可以将应用程序的默认语言设置为从右到左的某些语言,例如Persianininfo.plist或使用其他方法:
如果您需要强制视图,只需将此修饰符应用于您喜欢的任何视图:
.environment(\.layoutDirection, .rightToLeft)
Run Code Online (Sandbox Code Playgroud)
您可以申请ContentView()inSceneDelegate使其可用于所有子视图。
您可以在“场景代表”中设置布局方向:
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
let contentView = ContentView().environment(\.layoutDirection, .rightToLeft)
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
window.rootViewController = UIHostingController(rootView: contentView)
self.window = window
window.makeKeyAndVisible()
}
}
Run Code Online (Sandbox Code Playgroud)
或使用此修改器在某些视图上手动禁用方向更改:
.flipsForRightToLeftLayoutDirection(true)
Run Code Online (Sandbox Code Playgroud)
我尝试了一切方法来强制 SwiftUI 为 RTL 阿拉伯语,比如......
import SwiftUI
@main
struct MyApp: App {
init() {
UserDefaults.standard.set(["ar"], forKey: "AppleLanguages")
}
var body: some Scene {
WindowGroup {
ContentView()
.environment(\.locale, Locale(identifier: "ar"))
.environment(\.layoutDirection, .rightToLeft)
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果你使用NavigationView,这种方式会导致很多错误最好的解决方案是......
import SwiftUI
@main
struct MyApp: App {
init() {
UserDefaults.standard.set(["ar"], forKey: "AppleLanguages")
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |