一.方法 NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:<#(id)#> attribute:<#(NSLayoutAttribute)#> relatedBy:<#(NSLayoutRelation)#> toItem:<#(id)#> attribute:<#(NSLayoutAttribute)#> multiplier:<#(CGFlo…
1. iOS两种自适应布局方式:(修正说明:) -AutoLayout(自动布局) + SizeClasses(尺寸类别) -Autoresizing (自动调整尺寸/弹簧式调整尺寸) 前者 AutoLayout 是从iOS6出现,通过创建视图约束实现自适应,SizeClasses是iOS8 开始出现,用于配合AutoLayout使用,为解决所有(包括iPhone,iPad)iOS设备屏幕尺寸和屏幕旋转时UI的适配. 后者是早期开发使用的适配界面的方式,现在仍然保留.通过弹簧式调整控件尺寸,使其…
Autolayout自动布局实例即可以用故事板布局,也可以用纯代码创建,各有各的优点:用故事板布局,比较方便,而且直观,可以很直白的看到视图布局后的变化:采用代码布局,虽然代码比较多,有些麻烦,但是可以很好的进行控制,设置自己所要的布局.下面我就对这两种布局做一下演示.   练习1: 在控制器view底部添加2个view,1个蓝色,1个红色 2个view宽度.高度永远相等 p距离父控件左边.右边.下边间距和2个view之间的间距相等           采用故事板布局如下: 1.打开故事板,拖入…
Masonry介绍与使用实践:快速上手Autolayout http://www.cnblogs.com/xiaofeixiang/p/5127825.html http://www.cocoachina.com/ios/20141219/10702.html 介绍一下几种AutoLayout自动布局所经常使用的布局约束类型 width表示约束ui控件的固定宽度 height表示约束ui控件的固定高度 Leading Space to Superview 与父视图的左边界线保持固定距离 Trai…
约束(Constraint)在IOS编程中非常重要,这关乎到用户的直接体验问题. IOS中视图约束有几种方式,常见的是在IB中通过Pin的方式手动添加约束,菜单Editor->Pin->...但是我们往往需要更为灵活的操作,那么就要手动编写代码来实现这些操作. 1:长函数方法 Apple的工程师给我们提供了两种方式,第一种用长函数方法的形式 NSLayoutConstraint(item: <#AnyObject#>, attribute: <#NSLayoutAttribu…
我曾经遇到过一个问题:需要实现一个自定义的label(类似于UILabel),同时需要兼顾UILabel的大小自适应的特性.这个label通常宽度是固定的,通过autolayout指定其宽度约束,但不指定高度,让其根据内容自适应. 我们知道UIView的方法intrinsicContentSize可以帮助我们确定视图在autolayout下的大小,从而避免我们去设置其宽高的约束.于是我采用了这样的解决方案:将label的宽度作为其属性,使用前我必须指定label的宽度,然后label本身通过其宽…
#import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; [self createViewWithConstraintItem]; [self createViewWithConstraint]; } - (void)createViewWithConstraintItem {…
width表示约束ui控件的固定宽度 height表示约束ui控件的固定高度 Leading Space to Superview 与父视图的左边界线保持固定距离 Trailing Space to Superview 与父视图的右边界线保持固定距离 Top Space to Superview 与父视图的顶部边界线保持固定距离 Bottom Space to Superview 与父视图的底部边界线保持固定距离 Horizotal Spacing 两个子视图之间的水平距离保持固定长度 Vert…
AutoLayout概念是苹果自iOS6开始引入的概念. 目前为止,实现自动布局技术选型方面也可以使用xib和storyboard.在开发过程中通常登录.注册等变动可能性较小的视图,我会采用xib开发,其他页面通常会采用Masonry布局.xib和手码各有优势,视情况而定.   关于NSLayoutAttributeLeading和NSLayoutAttributeTrailing,前边和后边并不是总是为左边和右边的,有些国家的前边是右边后边是左边所以这样设定是为了国际化考虑.还有视图基准线NS…
  原文转自http://www.cnblogs.com/xjf125/p/4895978.html 目录: 一.什么是AutoLayout? 二.创建autoLayout的方法 三.VFL语言     一.什么是AutoLayout? Autolayout是一种“自动布局”技术,专门用来布局UI界面的,Autolayout自iOS6开始引入,由于Xcode 4的不给力,当时并没有得到很大推广.自iOS 7(Xcode 5)开始,Autolayout的开发效率得到很大的提升,Autolayout…
这次主要讲的用代码来设置AutoLayout,为实现添加autoLayout视图主要介绍使用如下该方法,调用方法:- (void)awakeFromNib {} +(instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2 attribute:(NSLayoutAttribute)attr2 m…
项目要做这样一个效果的启动页. 考虑到版本号是会不断变更的,因此采用动画效果启动页,让版本号动态加载iOS启动页动画效果 - 简书 考虑到屏幕适配问题,因此采用代码对视图添加约束.在添加约束的过程中遇到了一些问题,在此做一下记录和总结. 代码实现autolayout的注意点: 1.要先禁止autoresizing功能,设置view 的translatesAutoresizingMaskIntoConstraints 属性为 NO; 2.添加约束之前,一定要保证相关控件都已经在各自的父控件上.(就…
一 什么是Autolayout Autolayout是一种“自动布局”技术,专门用来布局UI界面的. 自IOS7 (Xcode 5)开始,Autolayout的开发效率得到很大的提高. 苹果官方也推荐开发者尽量使用Autolayout来布局UI界面. Autolayout能很轻松的解决屏幕适配的问题. Autolayout的两个核心概念: 1 参照 2 约束 二 Autoresizing 在Autolayout之前,有Autoresizing可以做屏幕适配,但局限性较大,有些任务无法完成. 三…
一.什么是VFL语言?为什么要VFL语言? VFL全称是Visual Format Language,翻译过来是“可视化格式语言” VFL是苹果公司为了简化Autolayout的编码而推出的抽象语言 代码分析: NSArray *arr = [NSLayoutConstraint constraintsWithVisualFormat:<#(NSString *)#> options:<#(NSLayoutFormatOptions)#> metrics:<#(NSDicti…
前言 说到iOS自动布局,有很多的解决办法.有的人使用xib/storyboard自动布局,也有人使用frame来适配.对于前者,笔者并不喜欢,也不支持.对于后者,更是麻烦,到处计算高度.宽度等,千万大量代码的冗余,对维护和开发的效率都很低. 笔者在这里介绍纯代码自动布局的第三方库:Masonry.这个库使用率相当高,在全世界都有大量的开发者在使用,其star数量也是相当高的. 效果图 本节详解Masonry的以动画的形式更新约束的基本用法,先看看效果图: 我们这里初始按钮是一个很小的按钮,点击…
1.在ViewController中拖入1个UIScrollView,并为其添加约束 约束为上下左右四边与superview对齐 2.在scrollview中,拖入1个UIView,为了便于区分将其设为橙色. 3.为view添加约束 约束为上下左右四边与superview对齐 添加完这些约束后,我们发现出现了错误,不要理会 4.为view添加宽度约束,本例中,想达到的效果是scrollView可以竖向滚动,不要横向滚动, 因此,可以将view的宽度约束为与scrollView相同 5.接下来为v…
1.新增一个contentView,设置为与滑动视图的父视图等高等宽. 2.利用代码 if(_MyTestTableView.frame.size.height != _MyTestTableView.contentSize.height) { CGRect newFrame = _MyTestTableView.frame; newFrame.size = _MyTestTableView.contentSize; _MyTestTableView.frame = newFrame; _MyS…
一 Masonry 下载地址:https://github.com/SnapKit/Masonry…
原文:Advanced Auto Layout Toolbox 这篇文章并没有具体介绍自动布局的一些基本概念,主要讲解了一些高级的使用方法和调试技巧,文中有的句子比较长,意思也有点难懂,所以需要静下心仔细揣摩.如果你刚接触自动布局,推荐你先看这几篇文章:1.官方的Guide:About Cocoa Auto Layout  2.来自raywenderlich的tutorial:Beginning Auto Layout in iOS 6: Part 2/2    3.来自@onevcat 的bl…
自动布局:Autolayout 简介: 在以前的iOS程序中,是如何设置布局UI界面的? 经常编写大量的坐标计算代码 为了保证在3.5 inch和4.0 inch屏幕上都能有完美的UI界面效果,有时还需要分别为2种屏幕编写不同的坐标计算代码(即传说中的“屏幕适配”)   什么是Autolayout? Autolayout是一种“自动布局”技术,专门用来布局UI界面的 Autolayout自iOS 6开始引入,由于Xcode 4的不给力,当时并没有得到很大推广 自iOS 7(Xcode 5)开始,…
1:理解概念 Auto Layout 中文翻译过来意思是 自动布局 ,通过内定的 Constraint (约束)和各项条件来计算出合理的布局.而这个合理的布局,符合我们的的预期和意图. 将我们想象中的结果展现出来. Constraint 的设定非常灵活,实现一种布局的方法可以通过多Constraint 套来完成. 以下几点是我们在开始使用之前必须弄清楚的事情: 1:我们要抛弃以往旧的布局方式不再去关注View的Frame,Center,和autoresizing. 因为这些坐标和大小的定位都可以…
iOS开发通过代码方式使用AutoLayout (NSLayoutConstraint + Masonry) 随着iPhone6/6+设备的上市,如何让手头上的APP适配多种机型多种屏幕尺寸变得尤为迫切和必要.(包括:iPhone4/4s,iPhone5/5s,iPhone6/6s,iPhone 6p/6ps). 在iPhone6出现以前,我们接触的iPhone屏幕只有两种尺寸:320 x 480和320 x 568.所以在那个时候使用传统的绝对定位(Frame)方式进行界面控件的布局还是比较轻…
一,概述 AutoLayout相比AutoResizing更加实用,是可以完全替代AutoResizing的一种自动布局方式.而在使用AutoLayout前,我们必须理解一个属性,那就是translatesAutoresizingMaskIntoConstraints.该属性表示autoresizingMask和autolayout两种方式的转换.这个属性对于在代码中生成的view来说默认是true,而对于IB中拖出来的view来说默认是false.对于这一属性,官方文档给出的解释是这样的: /…
http://blog.csdn.net/he_jiabin/article/details/48677911 随着iPhone6/6+设备的上市,如何让手头上的APP适配多种机型多种屏幕尺寸变得尤为迫切和必要.(包括:iPhone4/4s,iPhone5/5s,iPhone6/6s,iPhone 6p/6ps). 在iPhone6出现以前,我们接触的iPhone屏幕只有两种尺寸:320 x 480和320 x 568.所以在那个时候使用传统的绝对定位(Frame)方式进行界面控件的布局还是比较…
随着iPhone6/6+设备的上市,如何让手头上的APP适配多种机型多种屏幕尺寸变得尤为迫切和必要.(包括:iPhone4/4s,iPhone5/5s,iPhone6/6s,iPhone 6p/6ps). 在iPhone6出现以前,我们接触的iPhone屏幕只有两种尺寸:320 x 480和320 x 568.所以在那个时候使用传统的绝对定位(Frame)方式进行界面控件的布局还是比较轻松的,因为我们只需要稍微调整一下Frame就可以适配这两种大小的屏幕了.也许这也是为什么虽然AutoLayou…
原文:Animating Autolayout Constraints 作者:@kharrison 译者:CocoaChina--起个名字好难(CC论坛ID) 首发:CocoaChina 记于二零一五年晚春:距上次发文已有五天.看了众同僚的反馈.我把这段代码又一次搞了搞,以此来避免在执行时加入或删除约束.代替这些像JAVA一样笨重的方法的是我開始动态的改变黄色和蓝色视图约束的优先级.超级简单,超级高效. 在没有autoLayout之前,假设你想移动一个view,frame就会派出他两个小弟ori…
原文链接:http://www.objc.io/issue-3/advanced-auto-layout-toolbox.html 在我的上一个项目中,因为是面向公司内部使用的客户端,所以我直接抛弃了iOS5,在项目中大量使用了iOS6中的新特性:自动布局,才发现生活可以如此美好(除了调bug的时候),发张图大家感受一下,下面分别为横屏和竖屏下的布局,再也不要像之前那样适配的死去活来了: 这篇文章并没有具体介绍自动布局的一些基本概念,主要讲解了一些高级的使用方法和调试技巧,文中有的句子比较长,意…
本文主要介绍几个我遇到的总结的高级用法(当然我相信肯定有不少比这还高级的). 简单的storyboard中上下左右约束,固定宽高啥的用法在这里就不做赘述了. autolayout自动布局是iOS6以后出现的,但是在开始的一段时间里大家并不怎么会用,都是一上来先勾掉.之后随着5s,iPhone6的出现屏幕多种多样.用多层if来判断尺寸已经完全hold不住了才开始学习自动布局. 在这之前有个叫自动伸缩的autoresizing属性,这个主要用于一个控件和自己父控件之间的关系.只有autolayout…
介绍 关于AutoLayout的介绍可参考: 使用解读: https://segmentfault.com/a/1190000004386278 iOS 屏幕适配,autoResizing autoLayout和sizeClass图文详解 http://www.cnblogs.com/cxbblog/p/4166876.html AutoLayout使用注意点参考: https://github.com/smileyborg/UIView-AutoLayout/wiki/Tips-and-Tri…
一.出现崩溃情景: 给tableView创建一个头视图,也即tableHeaderView,然后使用Masonry并切换到iOS7/7.1系统给tableHeaderView中的所有子视图添加约束,此时出现崩溃. 二.崩溃日志: Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Auto Layout still required after executing -layo…