屏幕适配的发展:
用Autoresizing的时候对应的纯代码:
如果blueView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin则说明是左边的约束伸缩,系统自认为对blueView进行了右边的约束(也就是说对blueView的右边进行了约束)
AutoLayout的使用:
使用Autolayout时对label设置约束需要注意的地方:在我们平常使用label的时候会出现这样的情况,
我们在对label进行约束的时候只需要约束上、左、宽,在进行约束的时候系统会根据labe的内容来自动得出labe的高,如图所示
还有一个问题就是,当label的文字非常少的时候怎么让一行的宽度变得刚好是文字那么宽,
这个做法就是在设置宽度的时候,然后选择less than or equal,如图
Autolayout用纯代码实现的
//在写添加约束前要加上一句话是为了告诉系统不要将AutoresizingMask转化为Autolayout的约束blueView.translatesAutoresizingMaskIntoConstraints = NO;
对应的参数是:
// view1是子控件 view2是父控件
参数就是view1.attr1 = (relation可以是>=、=、<=现在写的=是例子而已)view2.attr2 * multipliter + c要注意的地方是[self.view addSubView:blueView]要写在加约束前,因为在对左右加约束的时候会用到父控件,如果此行代码写在加约束后面,找不到父控件程序会出现错误。
Autolayout纯代码的另一种写法Autolayut-VFL(Visual Format Language可视化格式语言)VFL例子:(H表示的是水平方向,V表示的是竖直方向)
一般简代码
简化代码注意所做标记与上面的区别
mertrics和mertrics2写法起到的作用是一样的,一般代码和简化代码运行后显示的效果是
注意的地方是:采用VFL时,有时候对控件进行布局的时候要结合下面这个方法
第三方Masonry的纯代码布局
用Masonry来对控件进行约束的三个方法
在对指定控件的高或宽进行约束的时候
注意标记的地方,两种方法都是可以的,这里说下equalTo和mas_equalTo的区别
下面在头文件引入宏,在用masonry的时候不用担心什么时候用equalTo和mas_equalTo
可以对控件这样约束,注意调用的方法不一样了
加上上面的宏,还会出现一个问题是
这时候在加上另外一个宏,(自动包装)
此时全完可以全部用eauqlTo了,如下图所示
在开发的过程中,把两个宏导入到头文件,在对控件进行约束的时候就不用考虑equalTo和mas_equalTo的问题了,导入到两个宏的头文件时,会调用下面的方法