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 ...
随机推荐
- delphi新语法之泛型实现的对象池模板
现在的DELPHI因为支持泛型的语法,所以也能支持模板编程了. // 标准模板 unit UntPools; interface uses Classes, SysUtils, Unt ...
- Delphi OleVariant 类型的用法
因客户需求,对客户的指纹机与公司产品进行集成,需要对指纹机做接口的二次开发,郁闷的是产商只提供了VB和C的DEMO示例,没有Delphi的,公司没有VB,C的环境,不能打开这二种语言的示例,因为本公司 ...
- 微信token认证方法原理
var http = require('http'); var url = require("url"); var crypto = require("crypto&qu ...
- 07.15 first与first-child的区别
举例: $("ul li:first"); //选取第一个 <ul> 元素的第一个 <li> 元素 $("ul li:first-child&q ...
- Android屏幕适配与切图_汇总
首先和最后,还是先看好官方文档:http://developer.android.com/guide/practices/screens_support.html 对应的翻译blog有牛人做了:And ...
- visio 2013 破解工具 - KMSpico
背景:环境是 win7, 64 bit装了 visio 2013 , 可以却不能用它来画图,在网上找了一些破解工具,大都不能解决问题.网上不靠谱的广告型文章太多了,比较头痛. 所幸,终于找到正确的破解 ...
- STL模板_map
map -key - value -键值无法重复 multimap -键值可以重复 声明: -map<int, string> m -multimap<int, string> ...
- trangle
#include<iostream> #include<algorithm> using namespace std; int main() { int a,b,c; whil ...
- MVC打开电脑对话框
//下载文件 public ActionResult Download(int id) { //依靠模板生成文档 var path =要下载的文件的路径 var name = Path.GetFile ...
- linux杂记(七)linux档案与目录管理指令
1.目录的相关操作:cd,pwd,mkdir,rmdir 路径(PATH): 绝对路径:路径的写法[一定由根目录/写起],例如/usr/share/doc这个目录 相对路径:路径的写法[不是由/写起] ...