我已经以编程方式为我的iOS应用程序启用了后退手势。它适用于默认区域和语言。应用程序具有以下功能:用户可以更改语言,即自定义本地化。但对于像阿拉伯语这样的RTL语言,应用内容是从右到左
[[UIView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft];
但是从左侧滑回去工作。如果我将设备语言设置为阿拉伯语,那么它就可以从右侧开始工作。
我希望以编程方式实现此目的,请告知我们,无论设备的语言是什么,如何为应用程序的RTL语言设置背面手势的滑动方向。
答案 0 :(得分:2)
通过使用UISemanticContentAttribute
,它只会影响任何内容
的UIView。
要完成滑动方向,您需要使用
UIUserInterfaceLayoutDirection
也用于手势和完整
RTL / LTR支持。
首先从AppDelegate评论以下行:
//@UIApplicationMain
之后,您将需要创建一个名为Application subclassing的类
UIApplication
并且可以覆盖userInterfaceLayoutDirection
根据应用程序中使用的语言进行切换(如果是LTR或RTL:
import UIKit
class Application: UIApplication,UIApplicationDelegate {
override open var userInterfaceLayoutDirection: UIUserInterfaceLayoutDirection {
get {
if language == .RTL {
return .rightToLeft
}else {
return .leftToRight
}
}
}
}
最后创建名为main.swift
的swift文件并添加以下内容
在其中划线:
import Foundation
import UIKit
CommandLine.unsafeArgv.withMemoryRebound(to:
UnsafeMutablePointer<Int8>.self, capacity: Int(CommandLine.argc)) {argv in
_ = UIApplicationMain(CommandLine.argc, argv,
NSStringFromClass(Application.self), NSStringFromClass(AppDelegate.self))
}
现在将在每个屏幕上调用userInterfaceLayoutDirection
多次,但您必须控制是否需要RTL或LTR。