阿拉伯语言的自动适配
in 技术 with 0 comment

阿拉伯语言的自动适配

in 技术 with 0 comment

前言

这是一篇扫盲文章。之前查过很多 Masonry 相关的资料,leading&trailingLeft&Right 到底应该使用哪一个。因为常年开发国内的应用,也没有体会到具体的意义。

结论

  1. leading&trailing 会自动适配 RTL(right to left)语言(Arabic 阿拉伯语,Hebrew 希伯莱语);
  2. 在同一个约束上面,混用 leading&trailingLeft&Right,会报错并停止运行;

    A constraint cannot be made between a leading/trailing attribute and a right/left attribute. Use leading/trailing for both or neither.'
    
  3. 在同一 View 上面,混用 leading&trailingLeft&Right,只会报约束错误;

Demo

Snipaste_2018-09-30_17-19-09.png

Demo 地址

上面是两种语言环境下的 iPhone 截图。这些组件分别是 UILabel,UIView,UIButton。

 [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerY.equalTo(self.nameLabel.superview);
        make.leading.equalTo(self.nameLabel.superview).offset(20);
        make.width.mas_equalTo(100);
    }];
    
    [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerY.equalTo(self.nameLabel);
        make.centerX.equalTo(self.lineView.superview);
        make.leading.greaterThanOrEqualTo(self.nameLabel.mas_trailing);
        make.width.mas_equalTo(1);
        make.top.equalTo(self.nameLabel).offset(-20);
    }];

    [self.btn mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerY.equalTo(self.lineView);
        make.leading.greaterThanOrEqualTo(self.lineView.mas_trailing);
        make.trailing.equalTo(self.btn.superview.mas_trailing).offset(-20);
    }];

因为 UIView 是 centerX 它的 superView。所以在上图会看起来位置没有发生变换。但是,UIButton 和 UILabel 的位置刚好调换了过来。

开始还以为文字也会从右到左转换过来,但是文字却没有任何变化。其实需要自己做阿拉伯语言的本地化文件,而阿拉伯语就是从右到左书写的。

另外的配置

如果你需要在模拟器里面看到其它语言的效果,你需要 Xcode 里面进行下面的配置:

  1. PROJECT -> <ProjectName> -> Info -> Localizations;
  2. 点击 “+”,添加 Arabic 语言;
  3. Edit Scheme -> Options -> Application Language -> Arabic。

    在模拟器运行即可看到阿拉伯语言的效果,不需要在模拟器系统里面设置【语言与地区】为阿拉伯语。因为如果你不会阿拉伯语言,会很难改回去...,血的教训),最后只能重置模拟器。

Responses