码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-09-23 20:56:16      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

   

   最近正在研究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框架来实现,有时间在分享给大家! 

 

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

标签:

原文地址:http://www.cnblogs.com/stanly12/p/4833284.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!