我正在使用 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()
不处理图像?
提前致谢