您的位置:首页 > 移动开发 > IOS开发

iOS 代码添加约束—VFL (AutoLayout)

2015-10-15 14:24 363 查看
摘要 在autolayout下,尽管使用IB来拖放控件,但仍然避免不了用代码来创建控件,这是约束需要代码来实现。

IOS 提供了两种添加约束的方法

第一种:

?


第二种:

?
第一种方法返回的是一个约束对象,也就是一条约束。看参数也比较好理解,就是在view1与view2之间设定一条约束,但往往一个控件需要好几条约束来约束,加上如此长的方法,所以导致一个控件就需要大量的代码来实现约束。

第二种方法返回的是array,包含的是一组约束,所以一般一个控件,调用两次第二种方法就能实现约束。所以这种方法更加的简洁,但是这种方法用到的是一种描述性语言,有点不好理解,下面就来简单介绍下第二种方法的用法。


先对这些参数进行说明:

(NSDictionary*)views:表示这组约束所涉及到的相关子view,比如一个界面上有    A、B两个控件,这组约束涉及到了这两个控件,那么就以字典类型将A、B控件设为参数views,可以用

?
(NSDictionary*)metrics:对于一些特定的宽、高,我们可以直接存放在字典中,这样在描述性语言中就可以直接用键来描述宽高。如:

?
(NSLayoutFormatOptions)
opts:见枚举类型,解释部分,常用的就这些

?
(NSString*)format 这就是核心VFL语句了,举例说明

?
 下面简单的讲个例子吧,要实现的效果如下图





 labelOne 宽高都不限制,与顶部高度30、与bgview左边界30、与右边imageview间距30

labelTwo与labelOne间距最小为0,且两者左对齐,labelTwo与底部边界也为30

imageview宽高都为150,与button的间距至少30

button与底部间距30,与iamgeview左右对齐

bgView 与superview左右对齐、上对齐

为了实现上述效果,我们只需要先初始化这些控件,但在autolayout中不需要用alloc来初始化,而且要关掉autoresizing constraints

?
所有约束如下

?
通过这些约束就能实现上述效果。

有兴趣的可以学习下
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: