适配----Autolayout

时间:2022-08-22 18:51:40

AutLayout 相对布局,根据参照视图的位置 来定义自己的位置。通过约束视图和视图之间的关系来分配屏幕上的位置,通常与VFL语言配合使用

VFL(visual format language)视觉格式化语言,通过字符串来约束字符和字符之间的关系

使用AutLayout必须把translatesAutoresizingMaskIntoConstraints禁用才可以使用frame  原点  自身的尺寸 来确定 自身位置。而autoLayout  根据参照视图的位置  来定义自己的位置

autoLayout是相对布局  约束视图和视图之间的关系 来分配 屏幕上的位置

使用VFL(Visual Format Language  视觉格式语言)通过添加字符串 来约束视图和视图之间的关系

使用autoLayout 必须把translatesAutoresizingMaskIntoConstraints禁用才可以使用

相对布局是找一个参照物 拿参照物当做基础,设置他和参照物的相对距离 来设置自己的位置

VFL 须有 横竖 两个方向的约束

H:表示: 横向

V: 表示:竖向

| 表示他的父视图

-50- 表示后面视图 与前面视图的距离 (后面视图是textField,前面视图是他的父视图)

[]表示是一个视图

[textField(>=200)] 要约束视图的宽  (>=200)允许最小的宽度是200  如果是竖向  就是允许最小的高度

@"H:|-50-[textField(>=200)]-50-|"

距离坐边原点距离50   右边边界距离50    允许视图的最小宽度是200

使用autoLayout适配的时候以最小尺寸设备 为基准

/*//    VFL  横向 竖向布局

//    @"H:" 设置横向布局

//    @"V:" 设置竖向布局

//    设置横向布局 距离参照视图的左侧边距

//    @"H:|-20-"

//    @"H:[view]-20-"

//    @"H:|-20-[view(200)]" view的宽  永远是200

//    @"H:|-20-[view(otherView)]" view的宽  与otherView的宽相同

//    @"H:|-20-[view(>=200)]" 设置横向布局 距离参照视图的左侧边距 设置view横向的尺寸 不能低于200

//    @"H:|-20-[view(>=200)]-20-|" 设置横向布局 距离参照视图的左侧边距 设置view横向的尺寸 不能低于200 设置右侧与参照视图之间的间距

*/

//    视图 使用属性的时候   绑定key  需要绑定它真实的名字  _titleLable

//    self.titleLable = _titleLable

下面是代码:

1.使用Autolayout布局一个视图

在viewDidLoad写入以下代码:

UIView *view = [[UIView alloc]init];

//使用Autolayout必须禁用translatesAutoresizingMaskIntoConstraints

view.translatesAutoresizingMaskIntoConstraints =NO;

view.backgroundColor =[UIColor redColor];

[self.view addSubview:view];

NSDictionary *views =NSDictionaryOfVariableBindings(view);

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat: @"H:|-20-[view(>=200)]-20-|" options:0 metrics:nil views:views]];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[view(>=200)]-20-|"  options:0 metrics:nil views:views]];

2.使用Autolayout布局两个视图:

UIView *view = [[UIView alloc]init];

view.translatesAutoresizingMaskIntoConstraints =NO;

view.backgroundColor =[UIColor redColor];

[self.view addSubview:view];

UIView *view1 = [[UIView alloc]init];

view1.translatesAutoresizingMaskIntoConstraints =NO;

view1.backgroundColor =[UIColor yellowColor];

[self.view addSubview:view1];

NSDictionary *views = NSDictionaryOfVariableBindings(view,view1);

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[view(>=200)]-20-|" options:0 metrics:nil views:views]];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat: @"V:|-40-[view(>=50)]" options:0 metrics:nil views:views]];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat: @"H:|-20-[view1(>=200)]-20-|" options:0 metrics:nil views:views]];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:  @"V:[view]-10-[view1(50)]" options:0 metrics:nil views:views]];

3.使用Autolayout布局多个视图

NSArray *colorList = @[[UIColor redColor],[UIColor yellowColor],[UIColor greenColor]];

for (int i=0; i<3; i++) {

UIView *view =[[UIView alloc]init];

view.backgroundColor = colorList[i];

view.tag = 30+i;

view.translatesAutoresizingMaskIntoConstraints = NO;

[self.view addSubview:view];

}

UIView *redColorview = [self.view viewWithTag:30];

UIView *yellowColorview = [self.view viewWithTag:31];

UIView *greenColorview = [self.view viewWithTag:32];

NSDictionary * views = NSDictionaryOfVariableBindings(yellowColorview,redColorview,greenColorview);

NSArray * HList = @[@"H:|-20-[redColorview(>=200)]-20-|",@"H:|-20-[yellowColorview(>=100)]-10-[greenColorview(yellowColorview)]-20-|"];

//    红色视图与黄色视图竖向关系和红色视图和绿色视图竖向关系

NSArray *VList = @[@"V:|-40-[redColorview(50)]-10-[yellowColorview(redColorview)]",@"V:|-40-[redColorview(50)]-10-[greenColorview(redColorview)]"];

for (int i =0; i<VList.count; i++) {

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:HList[i] options:0 metrics:nil views:views]];

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:VList[i] options:0 metrics:nil views:views]];

}

适配----Autolayout的更多相关文章

  1. 屏幕适配&sol;autoLayout autoresizingMask

    #pragma mark-- 屏幕适配/autoLayout autoresizingMask 1> 发展历程 代码计算frame -> autoreszing(父控件和子控件的关系) - ...

  2. 【iOS开发】多屏尺的自动适配 AutoLayout (纯代码方式)

    关于AutoLayout,最早从iOS6开始引入使用.   主要功能是使用约束,对视图进行相对布局,以适应不同屏尺的变换.   网上大量的资料都在介绍xib和storyboard,如何使用AutoLa ...

  3. iOS 适配&sol; autoLayout基本知识

    历史 iPhone3GS.iPhone4\4s:没有屏幕适配最早开发里面的程序全部都是写死的 iPad 旋转出来之后 Autoresizing问世iPhone5\5c\5s兼容各种不同的情况 系统适配 ...

  4. autoLayout&plus;sizeClass屏幕适配

    一.屏幕适配(autoLayout+sizeClass) 1.目前市面上的主流布局形式: a. frame 布局,通过代码计算(老程序员习惯使用) b. autoLayout(新的出现)与sizeCl ...

  5. iOS开发 多屏尺的自动适配&lpar;转&rpar;

    [iOS开发]多屏尺的自动适配 AutoLayout (纯代码方式) (2014-09-19 09:35:47) 转载▼ 标签: autolayout ios开发 xcode ui 分类: Xcode ...

  6. iOS 屏幕适配&colon;autoResizing autoLayout和sizeClass

    1. autoResizing autoresizing是苹果早期的ui布局适配的解决办法,iOS6之前完全可以胜任了,因为苹果手机只有3.5寸的屏幕,在加上手机app很少支持横屏,所以iOS开发者基 ...

  7. 【收藏】Android AutoLayout全新的适配方式, 堪称适配终结者

    来源:http://blog.csdn.net/lmj623565791/article/details/49990941 更多:Android屏幕适配全攻略(最权威的Google官方适配指导) 一. ...

  8. Android AutoLayout全新的适配方式 堪称适配终结者(转)

    一.概述 相信Android的开发者对于设配问题都比较苦恼,Google官方虽然给出了一系列的建议,但是想要单纯使用这些建议将设备很轻松的做好,还是相当困难的.个人也比较关注适配的问题,之前也发了几篇 ...

  9. iOS开发——屏幕适配篇&amp&semi;autoResizing autoLayout和sizeClass

    autoResizing autoLayout和sizeClass,VFL,Masonry详解 1. autoResizing autoresizing是苹果早期的ui布局适配的解决办法,iOS6之前 ...

随机推荐

  1. 11&period;写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名

    //首先列出需要被操作的url     $url_path = "http://www.sina.com.cn/abc/de/fg.php?id=1";     方法一:     ...

  2. Magicodes&period;WeiChat——自定义knockoutjs template、component实现微信自定义菜单

    本人一向比较喜欢折腾,玩了这么久的knockoutjs,总觉得不够劲,于是又开始准备折腾自己了. 最近在完善Magicodes.WeiChat微信开发框架时,发现之前做的自定义菜单这块太不给力了,而各 ...

  3. bzoj1412&colon; &lbrack;ZJOI2009&rsqb;狼和羊的故事

    空地之间开始没有连然后一直WA...题意混乱...尴尬. #include<cstdio> #include<cstring> #include<iostream> ...

  4. outline属性

    outline(轮廓)用于设置元素周围的一条线,用于元素边框的外围,可起到突出元素的作用. outline属性所有浏览器都支持,如果规定了 !DOCTYPE,则 IE8 支持 outline 属性. ...

  5. Hibernate实体对象三种状态

    Hibernate实体对象生命周期: 1. *状态(Transient,临时状态,瞬态) 在内存中*存在,与数据库无关,未被Hibernate的Session管理 2. 持久状态(Persiste ...

  6. Objective-C中的&commat;dynamic

    一.@dynamic与@synthesize的区别 @property有两个对应的词,一个是@synthesize,一个是@dynamic.如果@synthesize和@dynamic都没写,那么默认 ...

  7. Azkaban学习之路 (三)Azkaban的使用

    界面介绍 首页有四个菜单 projects:最重要的部分,创建一个工程,所有flows将在工程中运行. scheduling:显示定时任务 executing:显示当前运行的任务 history:显示 ...

  8. LayaAir疑难杂症之三:1&period;7版本click&lpar;&rpar;、execCommand&lpar;&&num;39&semi;copy&&num;39&semi;&rpar;函数不生效

    问题描述 在使用Laya1.7引擎开发H5游戏时,引入Js原生函数click( ),模拟一次点击事件,发现无效.在使用Laya1.7引擎开发H5游戏时,引入Js原生函数execCommand('cop ...

  9. hibernate中怎样配置两个联合属性为唯一约束(非联合主键)

    Annotation中配置: @Table元素包括了一个schema和一个catalog属性,如果需要可以指定相应的值. 结合使用@UniqueConstraint注解可以定义表的唯一约束(uniqu ...

  10. linux操作命令 开发人员需要掌握的一些命令

    1.man 查看帮助 2.命令 --help 简单帮助 3.help cd 查看一些Linux 命令行的一些内置命令 4.cp  粘贴复制命令  eg:cp yum.log /root/ 5.find ...