iOSAutoLayout(自己参考别的理解)
来源:互联网 发布:淘宝好评返现规则 编辑:程序博客网 时间:2024/05/18 22:42
iOS8和iPhone6发布已经过去蛮久了,广大的果粉终于迎来了大屏iPhone,再也不用纠结为大屏买三星舍苹果了…但是对于iOS开发人员来说,迎来了和Android开发开发一样的问题—>各种屏幕的适配(是不是可以要求加工资的节奏).对于适配,网传各种有关Size Class的论点,前段时间太忙,一直没去研究,套用+总的话,苹果在适配方面提供的方法做的比安卓好太多了.自己实测之后,确实很方便0.0(不过,还是想说,适配的核心始终是AutoLayout)
概念初探
iOS8之前,公司在开发项目时,先做的iPhone版,然后要求开发iPad版本,其实内容是完全一样的,只是UI变化了,但是我们就需要建立2个工程来分别对应实现.iOS8推出的Size Class,可以让我们在一个工程的storyboard中进行所有尺寸屏幕的适配,不仅是iPhone 4s-5/5s-6-6 Plus,还包括iPad界面.它引入了一种新的概念,抛弃传统意义上我们适配时所谓的具体宽高尺寸,把屏幕的宽和高分别分成两种情况:Compact-紧凑, Regular-正常(Any-任意,其实就是这2种的组合,所以我没分成3种情况).搭配起来是3*3,也就是无论如何变化,加起来也就9种,如上图.
1.实际应用中,这Compact,Any,Regular如何运用呢?
w:Any h:Any 是我们刚建立工程时候默认选择的,算是一切描述的父类.其他的种类描述都是在此基础上变化的,比如:如果weight设为Any,height设置为Regular,那么在该状态下的界面元素在只要height为Regular,无论weight是Regular还是Compact的状态中都会存在.于是:
w:Compact h:Compact - (w:Any h:Compact , w:Compact h:Any , w:Any h:Any)
w:Regular h:Compact - (w:Any h:Compact , w:Regular h:Any , w:Any h:Any)
w:Compact h:Regular - (w:Any h:Regular , w:Compact h:Any , w:Any h:Any)
w:Regular h:Regular - (w:Any h:Regular , w:Regular h:Any , w:Any h:Any)
2. 再来看一组数据和一张图(国外一位博主给出的,很形象):
iPhone4S,iPhone5/5s,iPhone6
竖屏:(w:Compact h:Regular)
横屏:(w:Compact h:Compact)
iPhone6 Plus
竖屏:(w:Compact h:Regular)
横屏:(w:Regular h:Compact)
iPad
竖屏:(w:Regular h:Regular)
横屏:(w:Regular h:Regular)
3.可以总结为:
如果项目不支持横屏显示,使用w:Compact h:Regular(或者直接取消使用Size Class)
如果项目支持横屏显示,使用w:Compact h:Regular+w:Any h:Compact
对于一些公有的约束(任意组合中都适用),一般放在w:Any h:Any中设置
iPad同理
所以,我觉得Size Class最大的帮助是,解决横屏适配和iPhone iPad共享一个设计板…(个人意见)
试验反馈一
1.首先,先建立一个工程,展开如下页面
PS:这是iOS8的新特性,真的用到项目里需要等放弃兼容iOS7 。。。显然,目前还是不行的
2.在Any Any情况下,放置一个Label,并设置约束上-左-下-右为0-0-20-0
3.在Compact Any情况下,又放置一个Label,并设置约束上为20
4.继续在Compact Any情况下,来看看横屏状态下的变化
5.最后切换到Regular Any下,完成6 Plus 的横屏显示
试验反馈二
试验一里面,验证了一下概念中所列举的各个屏幕适用的组合,接下来,算是Size Class 解决横屏的妙用
PS:运用于,横屏适配,重新排版竖屏时候的UI布局
除了改动不同组合下约束,也能改动控件在不同组合下是否显示
试验反馈三
AutoLayout这里不给具体如何设置,因为不知道如何写,感觉还是大家多动手去写,去试,最有效了
下面给出AutoLayout设置的图解
简答测试Demo结果图:
如果不横屏,也可以直接取消Size Classes(图不一样,不同时间写的…囧)
- iOSAutoLayout(自己参考别的理解)
- IOSAutoLayout详解
- 参考了下别的文章..springMVC也可以这么写
- C/C++表达式求值(参考后自己的一些理解)
- C++ 规范 自己参考
- 自己参考的常用命令
- 类似截图,自己参考
- mysql参考(仅供自己参考)
- 自己的应用中调用别的应用的activity
- c#句柄相关(往别的程序加自己的内容)
- 微信为啥别的人能登上自己登不上
- VB 让别的程序在自己窗体中运行
- IOS-像qq产品那样打开别的自己的应用程序
- 在自己的工程中继承别的工程中的类,
- 移植自己的.exe文件到别的文件夹,或其他计算机
- 在别的应用中用自己应用打开文件
- 自己参考的一些代码
- 供自己参考link2005错误
- POJ 2478 Farey Sequence
- Eclipse恢复已删除的文件和代码、svn使用了还原,但本地的没有提交找回没提交代码的方法
- linux sed命令详解
- Oracle使用sqlplus和rman无法使用退格、上翻键乱码等问题的解决办法
- Linux C线程的创建和使用
- iOSAutoLayout(自己参考别的理解)
- Maven使用Jetty部署应用
- 【《代码整洁之道》精读与演绎】之一 让代码比你来时更干净
- 自定义直方图平滑函数cvSmoothHist
- 获取手机屏幕大小
- 51nod1070(博弈,有趣的结论)
- 2016年TI杯电子设计大赛赛后总结
- Android样式的开发:selector
- 汇编语言、指令集