-1

我正在使用 MDC(材料设计组件)在 iOS 应用程序中构建我的 UI,我的应用程序中有 2 种语言英语和阿拉伯语,当切换到阿拉伯语时,我强制从右到左显示我的所有视图,效果很好,如图所示下面的图片:

在此处输入图像描述

在 AppDelegate 中的所有视图上强制 RTL,如下所示:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        UIView.appearance().semanticContentAttribute = .forceRightToLeft
    }

结果是:

在此处输入图像描述

但是当我以从左到右的模式推送视图控制器时,问题如下所示:

在此处输入图像描述

但在 RTL 模式下,它看起来如下:

在此处输入图像描述

我正在尝试水平翻转后退按钮但没有成功这里是我的推送视图控制器中的代码:

class UserCartViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        (UIApplication.shared.delegate as! AppDelegate).appBar?.navigationBar.backItem?.image?.mdf_imageWithHorizontallyFlippedOrientation()
    }

}

在这种backItem情况nil下,但是当我延迟代码时:

class UserCartViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
            (UIApplication.shared.delegate as! AppDelegate).appBar?.navigationBar.backItem?.image?.mdf_imageWithHorizontallyFlippedOrientation()
        }
    }

}

backItem一个价值和一个形象,但mdf_imageWithHorizontallyFlippedOrientation()不工作所以我的问题:

  • 当我强制所有视图为 RTL 时,是否有更好的方法来修复 MDCAppBar 的默认后退按钮被翻转?
  • 为什么在延迟时间后我得到后退按钮的值当 MDCAppBar 准备好时是否触发了任何函数或委托?
  • 最后为什么mdf_imageWithHorizontallyFlippedOrientation()不处理图像?

提前致谢

4

1 回答 1

1

在 RTL 中,只有对象从右到左更改位置,但图像按原样显示(图像不会翻转),因此,在这种情况下,您需要检查当前应用程序语言是否为 RTL 的条件,然后相应地使用图像,请参见以下代码。

if(UIApplication.shared.userInterfaceLayoutDirection == .rightToLeft) {
    //RTL //assign forword arraow
} else {
    //LTR //Assign back arrow
}

有关更多信息,请参阅此帖子https://medium.com/if-let-swift-programming/working-with-localization-in-swift-4a87f0d393a4

于 2019-02-28T09:06:41.990 回答