- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关于自动适配的那点事自iphone4s以后,苹果先后推出了iphone5、iphone5s、iphone6、iphone6plus、iphone6s、iphone6splus这些新的机型,它们的屏幕大小各有所异,从此给我们开发者留下了一个蛋疼的问题:屏幕适配。1、显示坐标定位方式:在4和4s的时代,我们采用显示坐标定位方式设置一个视图的坐标,比如view.frame = CGRectMake(20, 70, 160, 160);在当时显然是没有任何问题的,因为手机屏幕的大小是固定的,屏宽320像素,屏高480像素。 2、autoresizingMask:自iphone5以后,手机屏幕的高度变成了568像素,有时候我们定义的视图在iphone4和4s上运行起来位置摆放正常,但是在5和5s上就不那么和谐了,这就对开发者提出了适配的任务:如何让视图在不同大小的屏幕上恰到好处的展现出来呢?其实苹果最先推出来的跟适配沾边的技术autoresizingMask。autoresizingMask能给出子视图相对于父亲视图的对齐方式与缩放系数,当父视图发生变化时,通过每个视图autoresizingMask即可自动得出新的位置。使用步骤是第一步:设置父视图的autoresizesSubviews属性为YES,superView.autoresizesSubviews = YES;,否则后面的autoresizingMask都将失效。第二步:设置子视图的autoresizingMask, subView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin。这里面的autoresizingMask属性是一个枚举值,枚举值各项含义如下:UIViewAutoresizingNone:就是不自动调整。UIViewAutoresizingFlexibleLeftMargin: 自动调整与superView左边的距离,保证与superView右边的距离不变。UIViewAutoresizingFlexibleRightMargin: 自动调整与superView的右边距离,保证与superView左边的距离不变。UIViewAutoresizingFlexibleTopMargin: 自动调整与superView顶部的距离,保证与superView底部的距离不变。UIViewAutoresizingFlexibleBottomMargin: 自动调整与superView底部的距离,也就是说,与superView顶部的距离不变。UIViewAutoresizingFlexibleWidth: 自动调整自己的宽度,保证与superView左边和右边的距离不变。UIViewAutoresizingFlexibleHeight: 自动调整自己的高度,保证与superView顶部和底部的距离不变。UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin: 自动调整与superView左边的距离,保证与左边的距离和右边的距离和原来距左边和右边的距离的比例不变。比如原来距离为20,30,调整后的距离应为68,102,即68/20=102/30。遗憾的是这些技术的缺陷也十分明显,是一个不成熟的技术,原因有两点:(1)、autoresizingMask缩放比例是UIKit内部计算的,开发者无法指定缩放比例的精确值。(2)、变化规则只能基于父子视图,无法解决兄弟视图之间的位置关系。所以在iOS6推出自动布局(Auto Layout)技术后,autoresizingMask成为一项鸡肋技术。可以用食之无味,弃之可惜来形容。 3、AutoLayout-可视化编程自动布局:关于AutoLayout技术有可视化编程和纯代码两种方式,本处先讲解可视化的方式。自动布局是对autoresizingMask的进一步改进,它允许开发者在界面上的任意两个视图之间建立精确的线性变化规则。所谓线性变化就是数学中的一次函数,即: y = m*x + c其中x和y是界面中任意两个视图的某个布局属性,m为比例系数,c为常量。在storyboard或者xib中设置约束的方案有三种:(1)、在设计器中长按Control键拖动控件。(2)、在左侧文档结构窗口中长按Control键拖动控件。(3)、点击设计器底部图标,pin设置距离约束、固定宽高约束、等高等宽和宽高比约束,align设置对齐约束。注意:方案(1)和(2)中同时按住Shift键与Option键
文档评论(0)