iOS --- SizeClass总结(一)

我想大家在做xib约束的时候后遇到过很多的问题  ,今天有时间总结的一些常用的小技巧,分享给大家。

概念初探

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种,如上图.(不过,还是想说,适配的核心始终是AutoLayout), 说白话,这个东西(学名SizeClasses )就是适配各种屏幕的 包括ipadl,适配的核心始终是AutoLayout

所以,我觉得Size Class最大的帮助是,解决横屏适配和iPhone iPad共享一个设计板…(个人意见)

iOS --- SizeClass总结(一)_第1张图片

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)

iOS --- SizeClass总结(一)_第2张图片

横屏:(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.首先,先建立一个工程,展开如下页面

iOS --- SizeClass总结(一)_第3张图片

PS:这是iOS8的新特性,真的用到项目里需要等放弃兼容iOS7 。。。显然,目前还是不行的

2.在Any Any情况下,放置一个Label,并设置约束上-左-下-右为0-0-20-0


iOS --- SizeClass总结(一)_第4张图片
iOS --- SizeClass总结(一)_第5张图片

3.在Compact Any情况下,又放置一个Label,并设置约束上为20

iOS --- SizeClass总结(一)_第6张图片

4.继续在Compact Any情况下,来看看横屏状态下的变化

iOS --- SizeClass总结(一)_第7张图片

5.最后切换到Regular Any下,完成6 Plus 的横屏显示


iOS --- SizeClass总结(一)_第8张图片

转载自微信公众号:IT界 的一些事,微信识别二维码关注他,学习更多IT知识!

iOS --- SizeClass总结(一)_第9张图片

你可能感兴趣的:(iOS --- SizeClass总结(一))