实现界面布局根据阿拉伯语、波斯语等RTL语言而反转

2018-03-21  本文已影响0人  趣go

1. 实现依据:

根据国家使用习惯不同表示的意思不同

NSLayoutAttributeLeading:在习惯由左向右看的地区,相当于NSLayoutAttributeLeft;在习惯从右至左看的地区,相当于NSLayoutAttributeRight ;

NSLayoutAttributeTrailing:在习惯由左向右看的地区,相当于NSLayoutAttributeRight;在习惯从右至左看的地区,相当于NSLayoutAttributeLeft ;

2. 代码规范

2.1:使用系统aotuLayout框架时规范如下;

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:label attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1 constant:50]];

此代码示例是label处于self.view最左边的布局。

Attribute参数根据1的依据应该使用NSLayoutAttributeLeading

注意:代码中凡是居某控件的左边Attribute参数便填NSLayoutAttributeLeading,居某控件的右边Attribute参数便填NSLayoutAttributeTrailing。

2.2:使用Masonry第三方框架布局规范如下:

[labelLL mas_makeConstraints:^(MASConstraintMaker *make) {

        make.leading.equalTo(labelL.mas_trailing).offset(10);

        make.top.equalTo(labelL);

}];

此段代码是labelLL位置为labelL左边间距10的布局。

根据1的依据应使用make.leading确定labelLL的左边位置。

同理:如果是确定右边位置应使用make.trailing。

3. 控件自动大小

3.1 UI设计规范:考虑多语言翻译文本长度过长问题,设计UI时应考虑界面上下左右可延伸。

3.2 自动大小代码规范:

[labelL mas_makeConstraints:^(MASConstraintMaker *make) {

        make.leading.mas_equalTo(0);

        make.top.mas_equalTo(200);

        make.width.mas_greaterThanOrEqualTo(@60);//至少宽60

        make.width.mas_lessThanOrEqualTo(@160);//至多宽160

        make.height.mas_greaterThanOrEqualTo(@30);//至少高30

}];

此段代码是labelL的位置为处于self.View的最左边,距离self.View上边界200的位置,宽高根据文字自动大小,宽最大160,最小60,高最小60.

上一篇下一篇

猜你喜欢

热点阅读