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
?
所有约束如下
?
通过这些约束就能实现上述效果。
有兴趣的可以学习下
IOS 提供了两种添加约束的方法
第一种:
?
第二种:
?第二种方法返回的是array,包含的是一组约束,所以一般一个控件,调用两次第二种方法就能实现约束。所以这种方法更加的简洁,但是这种方法用到的是一种描述性语言,有点不好理解,下面就来简单介绍下第二种方法的用法。
先对这些参数进行说明:
(NSDictionary*)views:表示这组约束所涉及到的相关子view,比如一个界面上有 A、B两个控件,这组约束涉及到了这两个控件,那么就以字典类型将A、B控件设为参数views,可以用?
?
opts:见枚举类型,解释部分,常用的就这些
?
?
labelOne 宽高都不限制,与顶部高度30、与bgview左边界30、与右边imageview间距30
labelTwo与labelOne间距最小为0,且两者左对齐,labelTwo与底部边界也为30
imageview宽高都为150,与button的间距至少30
button与底部间距30,与iamgeview左右对齐
bgView 与superview左右对齐、上对齐
为了实现上述效果,我们只需要先初始化这些控件,但在autolayout中不需要用alloc来初始化,而且要关掉autoresizing constraints
?
?
有兴趣的可以学习下
相关文章推荐
- iOS开发:iOS TableViewCell自定义分割线
- iOS CocoaPods使用
- iOS 怕忘记的一些备用代码
- iOS 重写isEqual方法
- iOS应用性能调优(二)
- iOS程序性能优化(一)
- 如何减小iOS应用程序的大小?
- iOS原生地图开发进阶——使用导航和附近兴趣点检索
- ios之TableViewCell重用机制避免重复显示问题
- IOS Table中Cell的重用reuse机制分析
- iOS-方形图片设置成圆形图片
- iOS:CALayer锚点的使用
- Nagios 客户端简单安装
- iOS通过dSYM文件分析crash
- iOS exit函数深入浅出
- Nagios 服务端简单安装
- iOS开发如何将自己的程序在真机上运行
- iOS: 解决某些第三方库因为ARC不能使用的问题
- iOS 8 AutoLayout与Size Class自悟
- ios如何在xcode中创建文件夹