自动布局
@font-face { font-family: "Times"; }@font-face { font-family: "宋体"; }@font-face { font-family: "宋体"; }@font-face { font-family: "@宋体"; }@font-face { font-family: "Cambria"; }@font-face { font-family: "PingFang SC Regular"; }@font-face { font-family: "@PingFang SC Regular"; }@font-face { font-family: "Kaiti SC Black"; }@font-face { font-family: "Menlo Regular"; }@font-face { font-family: "Microsoft Yi Baiti"; }p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0cm 0cm 0.0001pt; text-align: justify; font-size: 12pt; font-family: Cambria; }p { margin-right: 0cm; margin-left: 0cm; font-size: 10pt; font-family: Times; }.MsoChpDefault { font-family: Cambria; }div.WordSection1 { }ol { margin-bottom: 0cm; }ul { margin-bottom: 0cm; }
自动布局
自动布局的作用:适配所有机型,因为现在所着苹果产品线的扩大,但iphone就有4个主要尺寸,4/4s,5/5s,6/6s,6plus/6splus,通过自动布局即可实现适配所有机型.
实现:添加约束条件获得,比如一个登录界面,你如果是按照6开发的,当时textfield居中,而换到4s调试,会发现不居中了,甚至部分不显示,给textfield添加约束条件,让它与左右二边距离固定,与上固定一个值,自身宽度固定一个值,就可以达到适配了.
Autoresizing
autoresizing是苹果早期的ui布局适配的解决办法,iOS6之前完全可以胜任了,因为苹果手机只有3.5寸的屏幕,在加上手机app很少支持横屏,所以iOS开发者基本不用怎么适配布局,所有的ui控件只要相对父控件布局就可以了,没错autoResizing就是一个相对于父控件的布局解决方法;注意:它只能相对父控件布局;不能约束子控件之间关系
注: 在用autoResizing的时候需要关闭autoLayout和sizeclass(如果是用xcode6)
他们之间是互相冲突的
Autolayout
Autolayout的作用非常明确:帮我们确定在不同设备、不同(父view)环境下,同一个可视单元所应具有合适的位置和尺寸,因此,当一个 UIView上所施加的约束能够唯一确定它的frame(x, y, width, height)的时候我们的自动布局的使用才是正确的。而新手通常犯的两类错误就是约束不足(约束太少)和约束冲突两种(约束太多)。如果你给出的约束只 能够确定这个view的大小,或者位置或者位置中的某一个项(比如x)的时候,就会出现约束不足的情况,在xib或者storyboard中,会以黄色的 警告出现在左侧提示框内;如果你给出的约束推导出了两个甚至多个互相矛盾的位置尺寸结果的时候,就产生了布局错误,在编译的时候直接就build不过。
苹果界面设计的统一:sizeClass
屏幕大了,尺寸多了,带给开发者的自然是适配方面的工作量和思考;正如大家知道的那样;苹果是一家最具追求的公司,他当然会推出可行的解决方案就是sizeClass;
sizeClass: 对屏幕尺寸进行了抽象:不在拘泥于具体尺寸;因为尺寸一直都在变化,我们如果按照尺寸去做适配,一定会很累的;
sizeClass针对iOS设备的屏幕进行了抽象分类:
- compact (紧凑-小)
- Any (任意)
- Regular (宽松-大)
屏幕适配
1.1如果用frame适配,需要多套代码,非常麻烦
1.2 autoResizing:ios6之前出现的。用来约束父子控件之间的关系,和autolayout是冲突的,两者不能同时使用,外边的四条线段选中,表示距离四周间距是固定的,里面的两个线段,当勾选上的时候,表示不固定,拉伸。不勾选,表示固定。
1.3 因为autorezing不能设置同级控件之间的关系,所以出现了aotolayout,既可以设置父子控件之间的关系也可以设置同级控件之间的关系。ios6开始出现,ios7开始大规模使用,
两个核心概念:约束和参照
两种颜色:
黄色:表示当前的显示效果和实际效果不匹配,需要更新frame
红色:表示约束不完整,约束冲突(表示两个或者多个约束约束的效果不一致)
1.4.sizeClass:autolayout:不能满足设置一套约束,在所有的屏幕都适配,所以出现了sizeclass,size用来区分屏幕
sizeclass没有宽高:把宽高各分成了三种类型
regualr
compact
any
当宽度和高度各是某种类型的时候,就会确定某一类屏幕
所以确定九类屏幕,只是不屏幕进行了区分,具体的约束关系
还需要autolayout实现
浙公网安备 33010602011771号