-(void)fun1{
//注意使用VFL,不用设置视图的frame
UIView *view = [[UIView alloc] init];
view.backgroundColor = [UIColor brownColor];
[self.view addSubview:view]; view.translatesAutoresizingMaskIntoConstraints = NO;//注意,要想使约束条件起作用,必须将此属性设置为no /*
VFL相关的标识符
H:代表水平方向
V:代表垂直方向
|代表父视图
- 代表距离 例(H:|-20-)表示距离父视图左侧20像素
[]代表子视图相关属性
*/ //对子视图View进行约束设置,format表示要设置的约束语句,在本句中意思为:view距离父视图左侧30像素,距离父视图右侧20像素(如果没设置具体的数字,且写了-)
//options代表对其方式,默认写0就行
//metrics 这里是一个字典,当在format中使用了动态数据比如上现这句:@"H:|-[button(==width)]-|",表示这个button的宽度为width,那么这个参数去哪里找呢?就是在这个字典里面找到key对应的值,如果没有找到这个值,app会crash
//views 代表约束条件中所涉及的所有视图(父视图除外)
NSArray *arr = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-30-[view]-|" options: metrics:nil views:NSDictionaryOfVariableBindings(view)];
/*这里用到了一个系统宏定义,NSDictionaryOfVariableBindings(),其作用是生成一个词典,key的名字和对象的标识符相同,以上述为例,生成的词典形式就是{"self.view":self.view,@"_view3":_view3,...},这个词典应当包含需要自动布局的父视图和所有的子视图,
*/
NSArray *arr1 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[view]-|" options: metrics:nil views:NSDictionaryOfVariableBindings(view)]; [self.view addConstraints:arr];
[self.view addConstraints:arr1]; } -(void)fun2{
UIView *view = [[UIView alloc] init];
view.backgroundColor = [UIColor grayColor];
[self.view addSubview:view]; view.translatesAutoresizingMaskIntoConstraints = NO;
//[view(>=200)] 表示给view设置尺寸,此时小括号里的关系运算符只能是 == <= >=,注意,改尺寸的值不要与约束冲突,==:约束可以不写,简写成H:[view(==200)] >=:当左右距离只设置了一个或者都未设置,视图的尺寸为最小值,如果两个都设置时,view 的尺寸为屏幕宽度减去左右距离,此时要保证减后的值>=尺寸最小值 NSArray *arr = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[view(>=200)]" options: metrics:nil views:NSDictionaryOfVariableBindings(view)]; NSArray *arr1 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[view(==100)]" options: metrics:nil views:NSDictionaryOfVariableBindings(view)];
[self.view addConstraints:arr1];
[self.view addConstraints:arr]; } -(void)fun3{
UIView *view = [[UIView alloc] init];
view.backgroundColor = [UIColor grayColor];
[self.view addSubview:view]; view.translatesAutoresizingMaskIntoConstraints = NO; CGFloat width = ; //当我们在设置约束条件时,距离父视图上下左右的像素值以及view的尺寸不是固定的数字(用某个字符串代替),这时我们需要给metrics设置一个字典,该字典的key必须是约束语句中使用的字符串,对应的value可以自行设置
NSArray *arr = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-left-[view(==width)]" options: metrics:@{@"width":[NSNumber numberWithFloat:width],@"left":@} views:NSDictionaryOfVariableBindings(view)]; NSArray *arr1 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[view(==100)]" options: metrics:nil views:NSDictionaryOfVariableBindings(view)];
[self.view addConstraints:arr1];
[self.view addConstraints:arr]; } -(void)fun4{
UIView *view = [[UIView alloc] init];
view.backgroundColor = [UIColor grayColor];
[self.view addSubview:view]; view.translatesAutoresizingMaskIntoConstraints = NO; CGFloat width = ; //当我们在设置约束条件时,距离父视图上下左右的像素值以及view的尺寸不是固定的数字(用某个字符串代替),这时我们需要给metrics设置一个字典,该字典的key必须是约束语句中使用的字符串,对应的value可以自行设置
NSArray *arr = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-left-[view(==width)]" options: metrics:@{@"width":[NSNumber numberWithFloat:width],@"left":@} views:NSDictionaryOfVariableBindings(view)]; NSArray *arr1 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[view(==100)]" options: metrics:nil views:NSDictionaryOfVariableBindings(view)];
[self.view addConstraints:arr1];
[self.view addConstraints:arr]; UIView *view1 = [[UIView alloc] init];
view1.backgroundColor = [UIColor purpleColor];
[self.view addSubview:view1]; view1.translatesAutoresizingMaskIntoConstraints = NO; //[view1(view)] 代表view1和view某个方向尺寸相同
NSArray *arr2 = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[view1(view)]-|" options: metrics:nil views:NSDictionaryOfVariableBindings(view1,view)]; //V:[view]-[view1]-20-|:子视图view1垂直方向距离平级子视图view 8像素(默认)
NSArray *arr3 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[view]-[view1]-20-|" options: metrics:nil views:NSDictionaryOfVariableBindings(view,view1)];
[self.view addConstraints:arr2];
[self.view addConstraints:arr3]; } //用VFL实现label自适应
-(void)fun5{
UILabel *label = [[UILabel alloc] init];
label.backgroundColor = [UIColor grayColor];
label.numberOfLines = ;
label.lineBreakMode = NSLineBreakByCharWrapping;
label.text = @"hiwehfdiuwehdiowqhdoiwehjdoiuwehdiouwhediuwheioudhewiuodhwehoihiuhiuhiuhiluhiuhiuhiuhihuhuuhhuh";
[self.view addSubview:label];
label.translatesAutoresizingMaskIntoConstraints = NO; NSArray *arr = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[label]-|" options: metrics:nil views:NSDictionaryOfVariableBindings(label)]; NSArray *arr1 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[label]" options: metrics:nil views:NSDictionaryOfVariableBindings(label)]; [self.view addConstraints:arr];
[self.view addConstraints:arr1];
}

IOS VFL屏幕自适应的更多相关文章

  1. 【Cocos2d-x 3.x】屏幕自适应匹配

    在进行游戏开发时, 由于市场上的Android移动设备的分辨率有很多种,而且IOS移动设备的分辨率也不相同,为了能让手游能在90%以上的移动设备较为完美的运行,因此需要考虑屏幕的自适应问题,让一套资源 ...

  2. ios开发屏幕问题

    1. 程序要要支持Iphone 和 ipad,所以首先必需创建一通用程序,这一操作只要在创建程序时在 devices那栏上勾选universal即可,完成后会发现有两个.xib文件,但只有一个view ...

  3. iOS 4s-6Plus屏幕自动适配及颜色转换为十六进制

    iOS各种屏幕自动适配及颜色转换为十六进制 ★★★XLJMatchScreen自动适配屏幕★★★ 支持pod导入 pod 'XLJScreenMatching', '~> 1.0.3' 如果发现 ...

  4. [Unity3D]NGUI用Sprite动画和屏幕自适应做游戏开始场景

    我们在玩任何一款手游产品时,都是先上来个logo界面,游戏欢迎界面等,这就意味着我们要做一款游戏需要多个场景,场景之间来回切换实现游戏逻辑,unity也不例外,所以从本篇开始将会介绍如何搭建多个场景, ...

  5. 4种必须知道的Android屏幕自适应解决方案

    文章来源:http://blog.csdn.net/shimiso/article/details/19166167 demo下载:http://www.eoeandroid.com/forum.ph ...

  6. NGUI屏幕自适应

    NGUI确实是非常棒的一个做界面的插件,比起U3D自带的GUI要好很多,当然也有一些不好之处,毕竟什么都不可能那么完美. 最近在用Unity写游戏使用NGUI遇到了一个很多人都在遇到的问题,就是关于屏 ...

  7. iOS实现屏幕旋转

    iOS实现屏幕旋转有两种方式 1. 应用本身支持 2. 手动旋转UIView (这种方式我没找到旋转 系统控件的方法 如:键盘.导航.UIAlertView) 如果你只是要把竖屏的播放器,做成支持横屏 ...

  8. 解决iOS设备屏幕切换时页面造成的问题

    环境:IOS6~7 Safari 问题:iOS设备屏幕切换时可能会造成屏幕变大,出现左右间距等问题 解决方法: 头部加入<meta name = "viewport" con ...

  9. .Net语言 APP开发平台——Smobiler学习日志:开发APP时,如何快速地实现屏幕自适应

    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 一.属性介绍 设置控件在客户端屏幕可见并超出客户端屏幕时,是否自动调节高度以适应屏幕高 ...

随机推荐

  1. [BZOJ3875][AHOI2014]骑士游戏(松弛操作)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3875 分析: 类似于spfa求最短路,设d[i]表示完全消灭i号怪物的最小花费,我们对 ...

  2. spring MVC学习笔记

    为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平.你的一个决定会影响团队未来的几年.要考虑方面太多: 1.简单易用,以提高开发效率.使小部分的精力在框架上,大部 ...

  3. JS日历制作获取时间

    1.直接获取 var myDate = new Date(); myDate.getYear(); 获取当前年份(2位) myDate.getFullYear(); 获取完整的年份(4位,1970-? ...

  4. difference between append and appendTo

    if you need append some string to element and need set some attribute on these string at the same ti ...

  5. js实现登陆页面的拖拽功能

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>登 ...

  6. impdp导入时卡死分析方法

    来源于: http://blog.csdn.net/yfleng2002/article/details/7973997 http://www.cnblogs.com/songling/archive ...

  7. Servlet作业2-将表单提交的商品信息输出到页面中

    1,表单页面 shangpin.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8&qu ...

  8. iOS开发中的错误整理,AFN框架和MJRefresh框架搭配应该注意的问题

    注意问题一:每次请求之前先将之前的请求取消                            注意问题二:请求成功之后要判断footer或者header的显示状态 首次下拉刷新,要判断是否已经全部 ...

  9. 【BZOJ 3527】【ZJOI 2014】力

    代换一下变成多项式卷积,这里是的答案是两个卷积相减,FFT求一下两个卷积就可以啦 详细的题解:http://www.cnblogs.com/iwtwiioi/p/4126284.html #inclu ...

  10. 编译php5.4的时候出现错误----configure: error: in `/usr/local/src/php540/php-5.4.0':

    错误如下:checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep - ...