VFL记录-代码写Autolayout的坑爹经历

首先小吐槽一下,网络上关于VFL的帖子真心好少啊. 迫不得已遇到需要代码来添加约束的时候,看了若干帖子...准备把最初级的做法和想法记录下来..

/*正文如下*/

http://www.cocoachina.com/industry/20131108/7322.html  最初只看了这篇帖子,仔细看下来应该是可以运用下VFL的..

在此小弟总结一下具体用法,概念和基础理论请参考官方文档,描述的最准确


首先,如果要用vfl或者api来实现AutoLayout的时候,请再脑海中(当然最好是纸上)实现确定的布局..并且保证是正确的..否则可能会crash的!代码里可不会像storyboard中报错的

VFL是通过这个API来实现的:

+ (NSArray *)constraintsWithVisualFormat:(NSString *)format options:(NSLayoutFormatOptions)opts metrics:(NSDictionary *)metrics views:(NSDictionary *)views;

这个API会返回一串约束..具体的参数和返回值可以参考文档.. (千万不要忽略文档的描述,可怜英语差的我), 之后会介绍每个参数怎么用

先介绍下那些奇怪符号的意义:

[]: 括起来的是view的变量(先理解成变量吧)

(): 约束中的数值(比如,间距20 就是 (20)当然也是可以使用'>''<'的)

H/V: 很好理解 H就是横向约束,V是纵向约束. 当没有见到这俩东西的话,默认值是H

@: 表示优先级(1000,750,250)新的xcode6中,有三种优先级共参考

|: 表示superview 

-: 两个对象之间的距离( [A]-20-[B] ,就是A和B之间相距20.),当两个-之间没有具体数值的时候,则表示标准距离就是8 

常用的表示语法差不多就总结这些了把.. 一下是官方的介绍


对于简单的约束行为,请在文档中搜索Visual format language 里面有一些简单的例子,对于一般需求也是可以满足的了.


一些需要用到的API

NSDictionaryOfVariableBindings() 这是一个宏,来绑定一些变量(主要是需要添加约束的view),在其中绑定过的view可以使用到vfl中

NSLayoutFormatOptions:这是上面介绍过的那个方法的opts参数的枚举类型, 文档中一目了然..可以通过名字看出作用不多做说明.

metrics: 主要说明一下这个参数,一个字典类型的参数.用来说明vfl中用到的变量所代表的值.举个栗子, 你需要设置两个view的间距是一个根据屏幕大小来确定的 就需要一个变量.

需要创建一个字典@{@"key":value,.....} ,之后就可以在vfl中使用key来代替你所要的值.

views: 这个很好理解,就是需要加上约束的view嘛.当然这个字典和metrics是一样的.. 在vfl中使用key来代替view.


最后,有了这些基础知识应该就可以完成一个相对不是特别复杂的布局了..官方文档中就有一些简单的栗子来贴个图吧,估计很多像我一样懒的人

看吧很简单... 

之后又看到了一个有用的,在这个偷过来...http://blog.csdn.net/easyer2012/article/details/10418755


用代码来描述AutoLayout的时候,用API来的代码量是很大的,熟悉了vfl之后代码自动布局真的舒服了很多..希望大家的手可以在键盘上飞起来!!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值