美文网首页学习网络文章
Swift RTL(AR多语言)适配

Swift RTL(AR多语言)适配

作者: keking | 来源:发表于2017-12-28 16:21 被阅读224次

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

    1,添加多语言翻译

    image.png

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

    2,icon的flip。

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


    image.png

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


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

    3,UIPageController等view的适配

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

    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 image.png

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

    相关文章

      网友评论

        本文标题:Swift RTL(AR多语言)适配

        本文链接:https://www.haomeiwen.com/subject/nxsvgxtx.html