Visual format language
所谓的VFL语言其实就是Visual format language 的缩写,是一种使用代码添加约束的方式,类似于Masonry SDAutolayout的效果,但是操作起来可能要相对简单。一行代码就可以实现。
举一个例子:
UIView *ive1=[UIView new];
ive1.translatesAutoresizingMaskIntoConstraints=NO;
ive1.backgroundColor=[UIColor redColor];
[self.view addSubview:ive1];
UIView *ive2=[UIView new];
ive2.translatesAutoresizingMaskIntoConstraints=NO;
ive2.backgroundColor=[UIColor blueColor];
[self.view addSubview:ive2];
因为要使用VFL语言,所以就不需要指定固定的frame,但是需要注意的是控件必须先添加到视图上去。
NSArray *ive1Arr= [NSLayoutConstraint
constraintsWithVisualFormat:@"H:|-20-[ive1]-20-|" //这个是水平方向的约束,'|'表示父视图
options:NSLayoutFormatAlignAllTop|NSLayoutFormatAlignAllBottom //这是个对齐方式
metrics:nil//这里返回的是一个字典,意思是将约束中的某些值用字符串来代替,字典中给多对应的字符串赋值,方便修改
views:NSDictionaryOfVariableBindings(blueView)];//跟上边相似,返回字典,可用字符串代替,然后给出名字。
//上边的式子等同于
NSArray *ive1Arr =[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-toLeft-[testView]-20-|"options:NSLayoutFormatAlignAllTop|NSLayoutFormatAlignAllBottom metrics:@{@"toLeft":@20} views:@{@"testView":ive1}];
[self.view addConstraints:ive1Arr];//给添加水平方向的约束数组
//给添加垂直方向的数组,高度为五十,距离底边距为10 这种写法会简单一些
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[ive1(50)]-10-|"
options:NSLayoutFormatDirectionLeadingToTrailing
metrics:nil
views:NSDictionaryOfVariableBindings(ive1)]];
注意一个问题,Visual format language 语言里不能出现乘除法,否则会崩溃。这种情况下只能使用另外一个方法
举例(ive1的宽度是ive2宽度的一半):
NSLayoutConstraint *constraintIve1=[NSLayoutConstraint
constraintWithItem:ive1 //目标item
attribute:NSLayoutAttributeWidth //约束类型
relateBy:NSLayoutRelationEqual //等同于
toItem:ive2 //对比item
attribute:NSLayoutAttributeWidth
multiplier:0.5 //对比的倍数
constant:0.0 //获取到响应的倍数以后增加固定量
];
上边内容为手打字母,直接copy可能会有字符错误。请理解代码意思以后自行书写。
Visual format language的更多相关文章
- IOS使用 Visual Format Language 定义水平和垂直约束
定义限制条件来改变一个 UI 组件在其父视图的水平和垂直方向布局的方法. 可以使用方程式里 H:方向符号代表水平方向的边距,使用 V:方向符号代表垂直方向的边 距. 转载请注明,本文转自:http:/ ...
- 使用Auto Layout中的VFL(Visual format language)--代码实现自动布局
使用Auto Layout中的VFL(Visual format language)--代码实现自动布局 2014-12-09 10:56 编辑: zhiwupei 分类:iOS开发 来源:机智的新手 ...
- iOS开发-VFL(Visual format language)和Autolayout
AutoLayout不管是在StoryBorad还是在xib中都相对来说比较简单,VFL(Visual fromat language)可视化语言基本上用到的比较少,在xCode4时候自动布局的概 ...
- 使用Auto Layout中的VFL(Visual format language)--代码实现自动布局【转】
本文将通过简单的UI来说明如何用VFL来实现自动布局.在自动布局的时候避免不了使用代码来加以优化以及根据内容来实现不同的UI. 一:API介绍 NSLayoutConstraint API 1 2 3 ...
- 转载自@机智的新手:使用Auto Layout中的VFL(Visual format language)--代码实现自动布局
本文将通过简单的UI来说明如何用VFL来实现自动布局.在自动布局的时候避免不了使用代码来加以优化以及根据内容来实现不同的UI. 一:API介绍 NSLayoutConstraint API 1 2 3 ...
- 【转】使用Auto Layout中的VFL(Visual format language)--代码实现自动布局
本文将通过简单的UI来说明如何用VFL来实现自动布局.在自动布局的时候避免不了使用代码来加以优化以及根据内容来实现不同的UI. 一:API介绍 NSLayoutConstraint API 1 2 3 ...
- VFL(Visual Format Language)语言
VFL的使用 使用VFL来创建约束数组: +(NSArray *)constraintsWithVisualFormat:(NSString *)format options:(NSLayoutFor ...
- 转载:使用Auto Layout中的VFL(Visual format language)--代码实现自动布局
本文将通过简单的UI来说明如何用VFL来实现自动布局.在自动布局的时候避免不了使用代码来加以优化以及根据内容来实现不同的UI. 一:API介绍 NSLayoutConstraint API 1 2 3 ...
- 使用Auto Layout中的VFL(Visual format language)——代码实现自动布局
本文将通过简单的UI来说明如何用VFL来实现自动布局.在自动布局的时候避免不了使用代码来加以优化以及根据内容来实现不同的UI. 一:api介绍 1.NSLayoutConstraint API NSL ...
随机推荐
- Oracle EBS-SQL (AR-2):检查应收收款核销额
SELECT cust.customer_number, cust.customer_name, cash.receipt_number, gcc.segment1 || '.' ...
- 解密电子书之二:EPD控制芯片
EPD控制芯片大致上相当于计算机的显卡,没了它,所有电子书都变白板.类似显卡中的ATI与NVIDIA,EPD控制芯片中也是两家:Surf(泰信科)和EPSON(爱普生),其中爱普生是最早推出电子纸显示 ...
- Cocos2D-x权威指南:核心类成员CCNode
节点类(CCNode)是Cocos2D-x中的主要类,继承自CCObject.继承关系如图3-2所看到的. 不论什么须要画在屏幕上的对象都是节点类. 最经常使用的节点类包含场景类(CCScene).布 ...
- 数据结构中La表的数据合并到Lb表中
实验描述:La表中的数据为(3,5,8,11) Lb 表中的数据为(2,6,8,9,11,15,20) 将La表中的数据而不存在Lb表的数据插入到Lb表中,从而实现并集操作. 出现的问题:最后实现的 ...
- Android 教你打造炫酷的ViewPagerIndicator 不仅仅是高仿MIUI
1.概述 哈,今天给大家带来一个ViewPagerIndicator的制作,相信大家在做tabIndicator的时候,大多数人都用过 TabPageIndicator,并且很多知名APP都使用过这个 ...
- matlab GUI之常用对话框(四)-- 输入对话框 inputdlg、目录对话框 uigetdir、列表对话框 listdlg
常用对话框(四) 1.输入对话框 inputdlg answer = inputdlg(prompt) answer = inputdlg(prompt,dlg_title) answer = in ...
- java学习之异常笔记
异常处理使用try catch finally throw throws 如果try中有执行到return后, 也会执行finally中的语句之后再跳出方法. 异常是对于某种错误情况的描述,是告诉方法 ...
- solr 通过URL删除索引
使用:update 参数:stream.body=<delete><query>date:[2014-06-15T00:00:00Z TO *]</query>&l ...
- 插入数据,返回最新id
最简单的方法就是在查询之后select @@indentity. sql代码: INSERT INTO table_name (.....) VALUES(......) SELECT @@IDEN ...
- 使用Integer类实现二叉树排序
class BinaryTree { class Node { private Comparable data; private Node left; ...