AutoLayout+Size Class

参考:

iOS 8 AutoLayout与Size Class自悟
初探iOS8中的Size Class

声明

本文只做学习记录,如有侵权,请联系我,立刻删除。

Size Class

iOS8推出的Size Class可以使我们在一个工程的storyboard中进行所有尺寸屏幕的适配。包括各种型号的iPhone也包括iPad界面。
把屏幕分为两种情况:Compact-紧凑、Regular-正常。当然,还有一个:Any-任意。任意即表示可以是Compact,也可以是Regular。
所以Compact,Regular,Any两两(包括自己跟自己)配对,可以组成九种类型。
选择宽为Compact高为Any的时候,提示为3.5-inch、4-inch、4.7-inch的横竖状态下的屏幕:

AutoLayout+Size Class_第1张图片
size-class-indicator.png

下面是苹果官网的一些举例:
iPad:

AutoLayout+Size Class_第2张图片
ipad_size_class_v_2x.png
AutoLayout+Size Class_第3张图片
ipad_size_class_h_2x.png

** iPhone**

AutoLayout+Size Class_第4张图片
iphone01_size_class_v_2x.png
AutoLayout+Size Class_第5张图片
iphone01_size_class_h_2x.png

iPhone6 plus:

AutoLayout+Size Class_第6张图片
iphone02_size_class_h_2x.png

也可如下归纳:

AutoLayout+Size Class_第7张图片
分布.png

以上可以看出来,Size Class是对不同屏幕,横屏竖屏进行区分。
如果APP不涉及横屏,只需要设置控件在w:Compact h:Regular上即可(或者直接取消使用Size Class)。
而最后进行界面的布局管理的还是AutoLayout。

通过预览来理解:

1、按步骤来,通过点击左下角的“+”,可以添加不同尺寸屏幕的预览。


AutoLayout+Size Class_第8张图片
预览1.png

2、在w:Any,h:Any下,放进一个label“any,any”,观察右边的窗口预览,可以发现,每一个预览窗口上,都有“any,any”字样的label:

AutoLayout+Size Class_第9张图片
预览2.png
AutoLayout+Size Class_第10张图片
预览3.png

3、从上文可以发现,如果是w:Compact h:Compact,则只有iPhone4的横屏,才符合这个类型。所以,在w:Compact h:Compact树上拖入一个label,观察右边预览,发现只有在iPhone4的横屏上才显示:

AutoLayout+Size Class_第11张图片
Compact-Compact.png

各位可以多尝试其他的组合,相信会加深对Size Class的理解。

Size Class 与 AutoLayout 的关系

新建一个项目,进入storyboard,发现默认的尺寸宽高均为Any的。在右侧视图可以选择开启或关闭Size Class。但是Size Class是依赖于AutoLayout的,如果视图关闭Size Class,则会弹出提示。而使用AutoLayout 则不一定必须使用Size Class。

  • 在项目不支持横屏的情况下,可以使用w:Compact h:Regular,或者直接取消使用Size Class。
  • 如果项目支持横屏,使用w:Compact h:Regular+w:Any h:Compact
  • 对于一些公有的约束(任意组合都适用),一般放到w:Any h:Any中设置
  • iPad同理。
AutoLayout+Size Class_第12张图片
关系.png

AutoLayout

Size Class不能解决适配的问题,它的功能是将屏幕进行分类,便于管理。真正搞适配的还是AutoLayout。

未完待续

你可能感兴趣的:(AutoLayout+Size Class)