Swift RTL(AR多语言)适配

iOS做其它的多语言适配,可能只是设计到多语言的翻译,还不会有太大的影响,但是如果要适配阿拉伯语,不仅是语言的翻译,还有他们的使用习惯问题需要适配。他们的语言阅读习惯是RTL(right-to-left,从右往左),而其它地区的是LTR(left-to-right,从左往右)。因此除了语言外,UI也需要做对应的适配,才会符合阿拉伯人的使用习惯。

1,添加多语言翻译

Swift RTL(AR多语言)适配_第1张图片
image.png

按上面的红框的流程就可以加上对应的多语言了

2,icon的flip。

有些图片时没有方向性的,有些图片时有方向性的,有方向性的icon我们就需要做适配,如back图标。一般情况下,我们的图片时这样的


Swift RTL(AR多语言)适配_第2张图片
image.png

如果需要做rtl的适配,需要


Swift RTL(AR多语言)适配_第3张图片
image.png

方向中选中both,然后在左边的图片视图里面就会多一个RTL的视图,再切一个对应的icon就可以了

3,UIPageController等view的适配

一般都有个引导页,引导页有个页面指示器,切换成ar后,页面指示器的方向还是RTL。因此需要修改下它的属性,在storyboard设置的属性如下

Swift RTL(AR多语言)适配_第4张图片
image.png

semantic属性默认值是unspecified。
具体这个属性的意义可参考
https://stackoverflow.com/questions/32634774/xcode-7-what-is-the-view-semantic-storyboard-setting
这个属性也可以通过代码中去设置

4,代码中如何判断方向

有时候有些逻辑可能需要在代码中去判断和处理,尤其是对于一些自定义的view,可能需要获取到当前的direction。

let dir = UIApplication.shared.userInterfaceLayoutDirection

这个属性就是个枚举值

@available(iOS 5.0, *)
public enum UIUserInterfaceLayoutDirection : Int {
    case leftToRight
    case rightToLeft
}

5,leading和left

在storyboard中,在给view添加constraint时,一般都是Leading space和Trailing space。但有时候手写的时候,就写成了left和right相关的属性了。如:

firstview.leadingAnchor.constraint(equalTo: scrollview.leadingAnchor, constant: 0).isActive = true
        firstview.leftAnchor.constraint(equalTo: scrollview.leftAnchor, constant: 0).isActive = true

这两对属性在大部分情况下是一致的,但是在RTL模型中就不合适。因为left和right相当于而是固定了属性,所以如果你需要支持rtl,就必须要使用leading和trailing。

6,调试的时候设置调试的语言

如图


image.png
Swift RTL(AR多语言)适配_第5张图片
image.png

选中语言后,close弹窗,运行调试时就是按这个设置的语言来调试的

你可能感兴趣的:(Swift RTL(AR多语言)适配)