实现界面布局根据阿拉伯语、波斯语等RTL语言而反转
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.