Masonry学习之前奏-纯代码实现 AutoLayout
来源:互联网 发布:nginx配置静态目录 编辑:程序博客网 时间:2024/06/07 09:33
在iOS6之前,大家都是通过UI控件的Frame属性和Autoresizing Mask来进行UI布局的。AutoLayout则是苹果公司在iOS6推出的一种基于约束的,描述性的布局系统。
Autolayout的使用又有多种方式:
- 使用storyboard或xib在可视化界面中添加约束
- 使用代码添加约束
- 使用VFL(Visual Format Language)语言来添加约束
- 使用第三方库,比如Masonry
代码添加约束
创建约束
NSLayoutConstraint *constrait = [NSLayoutConstraint constraintWithItem:view1 attribute:attr1 relatedBy:relation toItem:view2 attribute:attr2 multiplier:multiplier constant:c];
该函数有多达7个参数,简单解释如下:
view1: 要约束的控件attr1: 约束的类型(如NSLayoutAttributeLeft,是枚举常量)relation: 与参照控件之间的关系,包括等于、大于等于、小于等于(如NSLayoutRelationEqual 是指等于,是枚举常量)view2: 参照的控件attr2: 约束的类型(如NSLayoutAttributeLeft,是枚举常量)multiplier: 乘数,就是多少倍(1.0)c: 常量,做好了上述的约束之后会加上这个常量(100)
约束计算公式:
view1.attr1 =(view2.attr2 * multiplier)+ c;
添加约束的规则
在创建约束了之后,需要将其添加到作用的控件上才能生效:
- (void)addConstraint:(NSLayoutConstraint *)constraint NS_AVAILABLE_IOS(6_0); - (void)addConstraints:(NSArray<__kindof NSLayoutConstraint *> *)constraints;
- 对于两个同层级 view 之间的约束关系,添加到它们的父 view 上。
- 对于两个不同层级 view 之间的约束关系,添加到他们最近的共同父 view 上。
- 对于有层次关系的两个 view 之间的约束关系,添加到层次较高的父 view 上。
- 对于比如长宽之类的,只作用在该 view 自己身上的话,添加到该 view 自己上。
代码添加约束的注意事项
- 要先禁止 autoresizing 功能,防止 AutoresizingMask 转换成 Constraints,避免造成冲突,需要设置 view 的下面属性为 NO:
[view setTranslatesAutoresizingMaskIntoConstraints:NO];
- 添加约束之前,一定要保证相关控件都已经在各自的父控件上。
- 不用再给 view 设置 frame。
使用VFL
VFL全称是Visual Format Language,翻译过来是“可视化格式语言”。
VFL是苹果公司为了简化Autolayout的编码而推出的抽象语言。
VFL的原理与代码添加约束是一样的,不同的只是语法,官方给出的语法和示范如下:
官方链接:Visual Format Language
阅读全文
0 0
- Masonry学习之前奏-纯代码实现 AutoLayout
- AutoLayout自定义tableViewCell --- Masonry + UITableView+FDTemplateLayoutCell 纯代码实现
- 纯代码实现 AutoLayout 使用第三方框架 Masonry
- iOS Masonry 纯代码布局 AutoLayout
- 纯代码实现 AutoLayout
- 纯代码实现AutoLayout
- AutoLayout之纯代码布局
- iOS 一一 AutoLayout之Masonry实现
- 浅谈Autolayout之Masonry
- AutoLayout 之 Masonry
- IOS纯代码实现AutoLayout适配多屏幕
- 使用系统自带方法代码,VFL, Masonry实现Autolayout
- Masonry -- 使用纯代码进行iOS应用的autolayout自适应布局
- Masonry -- 使用纯代码进行iOS应用的autolayout自适应布局
- Masonry介绍与使用实践:快速上手Autolayout(纯代码IOSer)
- Autolayout示例2-Masonry实现
- iOS Autolayout之Masonry解读
- iOS Autolayout之Masonry解读
- Java概述
- 总结数组的相关知识
- apche+weblogic12C 拒绝访问
- Git基本使用方法——clone项目到本地
- Git基本使用方法——本地创建一个 git 项目推送到远程空仓库
- Masonry学习之前奏-纯代码实现 AutoLayout
- Git基本使用方法——分支
- 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A
- 日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯 的一个。以下为4个嫌疑犯的供词。 A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说
- 在屏幕上打印杨辉三角。
- ubuntu开启ipv6
- android逆向学习,笔记(二)
- webpack 前后端分离开发接口调试解决方案,proxyTable解决方案
- Vue 爬坑之路(六)—— 使用 Vuex + axios 发送请求