NSLayoutAttributeLeading和NSLayoutAttributeLeft的区别

从苹果官方可以看出,leading就是前面,left左边,这两个值在大部分国家其实是一样的。trailing和right跟这个一样就不说了。

但是在部分比较奇葩的国家,leading跟right是一样的,也就是有部分地方,如阿拉伯等右边是前面,也就是leading是right,这时候才有区别。

现在我们来验证一下,首先我们正常创建一个工程,然后给一个label设置约束(这里使用masonry框架)。

代码大概是这样的,那么出来的效果

这个在我们认知里是没问题的,leading就是left,但是同样的代码,我们这个时候如果把手机语言切换成阿拉伯语言,再看看效果。

看到效果,你肯定会很奇怪,明明设置的leading是前面距离20,为什么变成后面距离20了。这里就是因为不同地方的定义不一样,在阿拉伯地区,leading是指right,所以前面就变成右边了。

我们再来试试left的效果。

正常的是这样的

阿拉伯的是这样的

所以如果我们的APP不适配到阿拉伯地区,那么使用left,right就行了。但是如果是要适配这些地区,最好还是使用leading,trailing,因为这些地方的前后跟我们是不一样的,我们这样看好看,在他们看来可能这样很奇怪。就比如我们经常看一些漫画是从右边开始的,如果这些漫画突然从左边开始,我们会对一些剧情的发展看不懂。

在此建议有往国外发展的使用leading,trailing进行布局,国内的left,right。当然这些都是针对代码布局的,xib和storyboard是使用leading,trailing的。

希望对使用这个有疑问的朋友有帮助。

你可能感兴趣的:(NSLayoutAttributeLeading和NSLayoutAttributeLeft的区别)