QHP_01屏幕适配

屏幕适配的发展:

用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的区别

对下面的图片进行解读,标记的地方写成self.view系统会自动默认为(self.view.mas_right)
用UIEdgeInsetsMake方法的时候,里面的值都是正数,可以理解为视图是内嵌到里面的,和offset方法算数值的时候不一样。

下面在头文件引入宏,在用masonry的时候不用担心什么时候用equalTo和mas_equalTo

可以对控件这样约束,注意调用的方法不一样了

加上上面的宏,还会出现一个问题是

这时候在加上另外一个宏,(自动包装)

此时全完可以全部用eauqlTo了,如下图所示

在开发的过程中,把两个宏导入到头文件,在对控件进行约束的时候就不用考虑equalTo和mas_equalTo的问题了,导入到两个宏的头文件时,会调用下面的方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容