Auto Layout (一)基于VFL的简单布局

最近正在研究Auto Layout 记录下心得和大家分享下!效果图如下  很简单的效果!只适合新手级别的看

            

1.初始化三个需要的控件  需要注意的是 translatesAutoresizingMaskIntoConstraints 这个属性.用来禁止AutoresizingMask转换成AutoLayout,简单来说,Autoresizing和AutoLayout用的不是一套东西,但是默认情况下是相互转换的,这里我们要指定使用AutoLayout系统,所以要禁止自动转换

    UIView *cyanView = [[UIView alloc]init];
    cyanView.backgroundColor = [UIColor cyanColor];
//    防止Autoresizing和AutoLayout的相互转化
    cyanView.translatesAutoresizingMaskIntoConstraints = NO;
    [self.view addSubview:cyanView];

    UIView *redView = [[UIView alloc]init];
    redView.backgroundColor = [UIColor redColor];
    redView.translatesAutoresizingMaskIntoConstraints = NO;
    [self.view addSubview:redView];

    UIView *blueView = [[UIView alloc]init];
    blueView.backgroundColor = [UIColor blueColor];
    blueView.translatesAutoresizingMaskIntoConstraints = NO;
    [self.view addSubview:blueView];

分析下,大概需要添加是个限制,两行两列。 个人感觉VFL语言比较容易上手,因为看起来比较形象。H,V分别代表水平和竖直方向。“|” 可以代表上下左右四个边界 数字就代表表距离.

//    定义一个数组 来接收所需要的一些限制

    NSMutableArray *array = [NSMutableArray array];

    NSDictionary *dic = NSDictionaryOfVariableBindings(self.view ,cyanView,blueView,redView);

//    水平方向第一行的限制
    [array addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-10-[cyanView(==redView)]-10-[redView]-10-|" options:0 metrics:nil views:dic]];

//    水平方向第二行  blueView距离左右各20
    [array addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-10-[blueView]-10-|" options:0 metrics:nil views:dic]];

//    第一列
    [array addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-30-[cyanView(>=50,<=100)]-10-[blueView(>=100)]-10-|" options:0 metrics:nil views:dic]];

//    第二列
     [array addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-30-[redView]-10-[blueView(>=100)]-10-|" options:0 metrics:nil views:dic]];

最后只需要把限制添加到父视图就OK了。

[self.view addConstraints:array];

个人的一些总结,新手可能碰到的一些问题。  

1. 对于常碰见的一些crash,有的是因为添加的限制过多造成的冲突,有的是因为太少而导致的约束不足。

2.在VFL语句中用self会出现警告,可换成下划线。

当然也可以使用UIView+AutoLayout框架来实现,有时间在分享给大家!

时间: 2024-10-28 13:46:37

Auto Layout (一)基于VFL的简单布局的相关文章

转////iOS 8 Auto Layout界面自动布局系列1-自动布局的基本原理

iOS 8 Auto Layout界面自动布局系列1-自动布局的基本原理 http://blog.csdn.net/pucker/article/details/41832939 标签: iosinterface苹果布局界面 2014-12-10 00:25 11286人阅读 评论(2) 收藏 举报  分类: iOS开发(19)  版权声明:本文为博主原创文章,未经博主允许不得转载. 苹果今年如约放出了新的iPhone 6与iOS 8系统,SDK针对新的设备和系统的界面适配也进行了若干改进,因此

使用Auto Layout中的VFL(Visual format language)--代码实现自动布局

使用Auto Layout中的VFL(Visual format language)--代码实现自动布局 2014-12-09 10:56 编辑: zhiwupei 分类:iOS开发 来源:机智的新手投稿 6 23450 Auto Layout自动布局VFL 招聘信息: 高级iOS开发工程师 高级PHP开发工程师 iOS高级研发工程师 iOS开发工程师 高级iOS手机应用软件开发工程师(培训讲师) 高级Cocos2d-x游戏开发工程师(培训讲师) iOS手机软件开发工程师 iOS工程师 Web后

使用Auto Layout中的VFL(Visual format language)--代码实现自动布局【转】

本文将通过简单的UI来说明如何用VFL来实现自动布局.在自动布局的时候避免不了使用代码来加以优化以及根据内容来实现不同的UI. 一:API介绍 NSLayoutConstraint API 1 2 3 4 NSLayoutConstraint + (NSArray *)constraintsWithVisualFormat:(NSString *)format options:(NSLayoutFormatOptions)opts metrics:(NSDictionary *)metrics

转载自@机智的新手:使用Auto Layout中的VFL(Visual format language)--代码实现自动布局

本文将通过简单的UI来说明如何用VFL来实现自动布局.在自动布局的时候避免不了使用代码来加以优化以及根据内容来实现不同的UI. 一:API介绍 NSLayoutConstraint API 1 2 3 4 NSLayoutConstraint + (NSArray *)constraintsWithVisualFormat:(NSString *)format options:(NSLayoutFormatOptions)opts metrics:(NSDictionary *)metrics

使用Auto Layout中的VFL(Visual format language)——代码实现自动布局

本文将通过简单的UI来说明如何用VFL来实现自动布局.在自动布局的时候避免不了使用代码来加以优化以及根据内容来实现不同的UI. 一:api介绍 1.NSLayoutConstraint API NSLayoutConstraint + (NSArray *)constraintsWithVisualFormat:(NSString *)format options:(NSLayoutFormatOptions)opts metrics:(NSDictionary *)metrics views:

【转】使用Auto Layout中的VFL(Visual format language)--代码实现自动布局

原文:http://www.cocoachina.com/ios/20141209/10549.html 本文将通过简单的UI来说明如何用VFL来实现自动布局.在自动布局的时候避免不了使用代码来加以优化以及根据内容来实现不同的UI. 一:API介绍 NSLayoutConstraint API NSLayoutConstraint + (NSArray *)constraintsWithVisualFormat:(NSString *)format options:(NSLayoutFormat

iOS 9 Auto Layout界面自动布局系列6-自适应布局

设计MM小尹:"小李,邮件里是我们设计的用户登录界面初稿,请你看一下技术上有没有什么问题." 程序猿小李:"好的,我看一下." 小李打开邮件,看到界面设计初稿为: 这是一个同时支持iPhone和iPad的统一App(Universal App).尽管小李对Auto Layout很熟悉,但是看到设计稿之后,小李却犯了难.因为设计稿中的iPhone横屏的界面布局方式是特殊情况,如果按照图1的方式添加一套自动布局约束,程序就需要判断设备类型(当前是iPhone还是iPad

在UIScrollView中使用Auto Layout中的VFL(Visual format language)

上一篇VFL(Visual format language)的文章中讲了一些基本用法.传送门http://www.cnblogs.com/wupei/p/4150626.html. 这篇简单的讲解下UIScrollView下的自动布局.UIScrollView有一个contentSize所以,他跟其他的view不一样.其他的view你只需要指定他的四个边距,或者能固定他的大小就行.但是UIScrollView不行,约束写不好可能会导致滚动不了,或者报错或一堆警告.但是理解了他的原理就很容易去做到

iOS 开发实践之 Auto Layout

原:http://xuexuefeng.com/autolayout/?utm_source=tuicool 本文是博主 iOS 开发实践系列中的一篇,主要讲述 iOS 中 Auto Layout(自动布局)在实际项目中的使用. Auto Layout 在 2012 年的 iOS 6 中发布,距今已经 2 年多了,如果从 2011 年在 Mac OS X 上发布的 Auto Layout 开始算起,已经超过 3 年了.如果你的简历上写着 2 年以上工作经验,而竟然不会使用 Auto Layout