视图布局约束 VFL

约束规则如下:

使用规则

|: 表示父视图

-:表示距离

V:  :表示垂直

H:  :表示水平

>= :表示视图间距、宽度和高度必须大于或等于某个值

<= :表示视图间距、宽度和高度必须小宇或等于某个值

== :表示视图间距、宽度或者高度必须等于某个值

@  :>=、<=、==  限制   最大为  1000     优先级 1000最大

1.|-[view]-|:  视图处在父视图的左右边缘内

2.|-[view]  :   视图处在父视图的左边缘

3.|[view]   :   视图和父视图左边对齐

4.-[view]-  :  设置视图的宽度高度

5.|-30.0-[view]-30.0-|:  表示离父视图 左右间距  30

6.[view(200.0)] : 表示视图宽度为 200.0

7.|-[view(view1)]-[view1]-| :表示视图宽度一样,并且在父视图左右边缘内

8. V:|-[view(50.0)] : 视图高度为  50

9: V:|-(==padding)-[imageView]->=0-[button]-(==padding)-| : 表示离父视图的距离

为Padding,这两个视图间距必须大于或等于0并且距离底部父视图为 padding。

10:  [wideView(>[email protected])]  :视图的宽度为至少为60 不能超过  700 ,最大为1000

11: 如果没有声明方向默认为  水平  V:

- (NSArray *)constraints NS_AVAILABLE_IOS(6_0);

对于有层次关系的两个view之间的约束关系,添加到层次较高的父级view上。

对于两个不同层级view之间的约束关系,添加到他们最近的共同父级view上。

对于两个同层级view之间的约束关系,添加到他们的父级view上。

六、- (void)addConstraint:(NSLayoutConstraint *)constraint NS_AVAILABLE_IOS(6_0); //视图布局上添加一个约束

七、- (void)addConstraints:(NSArray *)constraints NS_AVAILABLE_IOS(6_0); //视图布局上添加多个约束

八、- (void)removeConstraint:(NSLayoutConstraint *)constraint NS_AVAILABLE_IOS(6_0); 移除视图布局上的一个约束

九、- (void)removeConstraints:(NSArray *)constraints NS_AVAILABLE_IOS(6_0); 移除视图布局上的多个约束

十、- (void)updateConstraintsIfNeeded NS_AVAILABLE_IOS(6_0); //调用新的视图布局自动触发,更新视图布局上的约束

十一、- (void)updateConstraints NS_AVAILABLE_IOS(6_0); // 更新自定义视图布局约束

十二、- (BOOL)needsUpdateConstraints NS_AVAILABLE_IOS(6_0); 判断视图布局是否需要更新约束

13、- (void)setNeedsUpdateConstraints NS_AVAILABLE_IOS(6_0); 设置视图布局是否需要更新约束

UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];

UIButton *acceptButton = [UIButton buttonWithType:UIButtonTypeCustom];

NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(cancelButton,acceptButton);

NSArray *demoConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"[cancelButton(72)]-12-[acceptButton(50)]" options:0 metrics:nil views:viewsDictionary]; //取消按钮宽72point,accept按钮宽50point,它们之间间距12point

NSLog(@"%@", demoConstraint);

[oneViewDemo updateConstraintsIfNeeded];

[oneViewDemo updateConstraints];

[oneViewDemo needsUpdateConstraints];

[oneViewDemo setNeedsUpdateConstraints];

[oneViewDemo  addConstraints: demoConstraint];

[oneViewDemo  addConstraint: [demoConstraint objectAtIndex:0]];

[oneViewDemo removeConstraint:[demoConstraint objectAtIndex:1]];

[oneViewDemo removeConstraints:demoConstraint];

时间: 2024-11-09 00:40:10

视图布局约束 VFL的相关文章

【转 iOS 8 Auto Layout界面自动布局系列2-使用Xcode的Interface Builder添加布局约束

原文网址:http://blog.csdn.net/pucker/article/details/41843511 上一篇文章<iOS 8界面自动布局系列-1>简要介绍了iOS界面布局方式的前世今生.本篇文章将详细介绍如何使用自动布局实现不同屏幕尺寸的适配. 添加自动布局约束(下文简称约束)有以下三种方式: 使用Xcode的Interface Builder界面设计器添加并设置约束 通过代码逐条添加约束 通过可视化格式语言VFL添加约束 本文将以一个简单的例子来演示如何使用这几种方式添加约束,

iOS 8 Auto Layout界面自动布局系列2-使用Xcode的Interface Builder添加布局约束

http://blog.csdn.net/pucker/article/details/41843511 上一篇文章<iOS 8界面自动布局系列-1>简要介绍了iOS界面布局方式的前世今生.本篇文章将详细介绍如何使用自动布局实现不同屏幕尺寸的适配. 添加自动布局约束(下文简称约束)有以下三种方式: 使用Xcode的Interface Builder界面设计器添加并设置约束 通过代码逐条添加约束 通过可视化格式语言VFL添加约束 本文将以一个简单的例子来演示如何使用这几种方式添加约束,如下图所示

iOS 8 Auto Layout界面自动布局系列3-使用代码添加布局约束

本系列的第一篇文章介绍了自动布局的基本原理,第二篇文章通过一个简单的例子演示了如何使用Xcode的Interface Builder(简称IB)以可视化方式添加约束.本篇为该系列的第三篇文章,主要介绍如何通过代码来添加布局约束. 其实,我个人认为本篇才应该是系列的第二篇,因为通过代码构建自动布局约束是最基础的,也是最灵活的方式.而IB只不过是把复杂的过程以直观简单的方式呈现出来,而且并非所有的情况都能用IB来解决,所以学习并掌握通过代码来添加自动布局约束是非常必要的.但是为了降低学习的难度,提高

视图布局

布局的两种模式 1,基于父视图参考系的偏移frame       基于父视图比例自动补偿调整. 2,基于容器约束和内容压力求解视图位置           动态求解替代补偿模式 内容压力:负压力(吸引边框)正压力(排斥边框) *通过alloc init出来的对象默认支持frame方法 *通过storyboard拖出来的默认支持auto layauto(约束) 平衡约束和内容压力的优先级 约束自身的宽和高,,约定宽高比 容器.父视图-----距离父视图的上下左右各是多少,距离中心 同级视图    

这个断点可以帮你检查布局约束

前言: 在现在iOS布局中,估计有很多很多开发者会使用到 Masonry 或者用到 SDAutoLayout 或者Storyboard或者还有Xib等等,前面两个三方的确是方便了我们的布局,但你写完之后难免可能布局约束支架会有一些冲突或者会有约束警告的出现,比如那个约束要突破那个约束的警告等等.在这里就分享一下写完布局之后自己对布局约束的算是一种检查方法吧. 大家应该听过 UIViewAlertForUnsatisfiableConstraints 这个断点,这个在你写约束出现警告的时候Xcod

MVC的布局页,视图布局页和分布页的使用

一,结构如下图 二,布局页和视图布局页 1>使用方法一 _ViewStart.cshtml @{ Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>视图布局页_ViewStart.cshtml</h2> _Layout.cshtml <!DOCTYPE html> <html> <head> <meta name="viewport" content

Oracle组函数、多表查询、集合运算、数据库对象(序列、视图、约束、索引、同义词)等

count组函数:(过滤掉空的字段) select count(address),count(*) from b_user max() avg() min(),sum() select sum(age),max(age),min(age),avg(nvl(age,0)) from b_user 1       260     70      10      37.1428571428571 group by:如果前面定义了该字段名  则groupby必须也写上该字段 select name,pw

使用Reveal分析其他App的视图布局

使用Reveal分析其他App的视图布局 我们有时候可能不知道怎么怎么布局视图,这个时候我们就会想要去参考相似的其他App的界面布局,那么我们就可以使用Reveal来进行布局分析. (一)越狱安装OpenSSH和Cydia substrate 查看他人App时需要将手机越狱,越狱的方法这里就不仔细讲了,大家搜索一下就行.越狱成功后就能看见这个安装好的软件Cydia软件,启动Cydia软件,第一次启动需要更新一下软件源.在Cydia软件里下载安装OpenSSH和Cydia substrate (二

iOS 8 Auto Layout界面自动布局系列4-使用VFL添加布局约束

本系列第一篇文章介绍了自动布局的基本原理,第二篇通过一个简单的例子演示了如何使用IB以可视化方式创建自动布局约束,第三篇使用代码直接创建NSLayoutConstraint实例来定义自动布局约束.本篇文章在第三篇文章的基础上,使用Visual Format Language(暂且翻译为可视化格式语言,简称VFL)创建约束. 在第三篇文章中,我们仅仅创建了4个视图,就需要创建将近20个NSLayoutConstraint实例,而且每次创建NSLayoutConstraint实例时都需要传入7个参数