用于RTL语言的iOS后退手势

时间:2018-04-03 08:42:52

标签: ios swipe-gesture

我已经以编程方式为我的iOS应用程序启用了后退手势。它适用于默认区域和语言。应用程序具有以下功能:用户可以更改语言,即自定义本地化。但对于像阿拉伯语这样的RTL语言,应用内容是从右到左

   [[UIView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft];

但是从左侧滑回去工作。如果我将设备语言设置为阿拉伯语,那么它就可以从右侧开始工作。

我希望以编程方式实现此目的,请告知我们,无论设备的语言是什么,如何为应用程序的RTL语言设置背面手势的滑动方向。

1 个答案:

答案 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。