SizeClasses 详解


iOS 8在应用界面的可视化设计上添加了一个新的特性-Size Classes。对于任何设备来说,界面的宽度和高度都只分为三种描述:紧凑,任意和宽松。这样开发者便可以无视设备具体的尺寸,而是对这两类和它们的组合进行适配。

为什么苹果推出SizeClasses

  • iPhone3gs-4s : frame直接写死。
  • iPad : autoresizing —> 根据父控件frame发生改变,子控件跟着一起改变。
  • iPhone5-iPhone5s : autolayout —>自动布局。
  • iPhone6和iPhone6p : size Classes—>发现屏幕变的太多样化,界面不得不统一。

sizeclass

  • 仅仅是对屏幕进行了分类, 真正排布UI元素还得使用autolayout
  • 不再有横竖屏的概念, 只有屏幕尺寸的概念
  • 不再有具体尺寸的概念, 只有抽象尺寸的概念

sizeclass把宽度和高度各分为3种情况

  • Compact : 紧凑(小)
  • Any : 任意
  • Regular : 宽松(大)

sizeclass中的符号代表

  • Compact: -
  • Any: *
  • Regular: +

继承性

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)

设备对应屏幕

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)

Apple Watch(猜测)

竖屏:(w:Compact h:Compact)

横屏:(w:Compact h:Compact)

sizeclass和autolayout的作用

sizeclass:仅仅是对屏幕进行了分类

autolayout:对屏幕中各种元素进行约束(位置\尺寸)

以上是对SizeClasses的简单概念介绍。

下面将会对其使用进行介绍(较多的图文介绍)

图一(整体工程)

IOS SizeClasses 详解-LMLPHP

图二(我们按照图一的指向点击后就可以进入到其操作界面)

IOS SizeClasses 详解-LMLPHP

图三(看到图二我想你会想这是什么和上面的文字有什么关系吗?那么图三会让他们联系起来)

IOS SizeClasses 详解-LMLPHP

通过图三可以让我们使图与文字相连接,但是该如何使用还不是很清楚,下面通过实例让我们对其进行了解。

实例一:让一个view竖屏时显示,横屏时不显示。(图解如下)

在竖屏时显示(在竖屏时添加view)

IOS SizeClasses 详解-LMLPHP

横屏不显示(因为我们是在竖屏时添加的,在横屏时不做操作即可)

IOS SizeClasses 详解-LMLPHP

让我们看看实例结果:

结果一:

IOS SizeClasses 详解-LMLPHP

结果二(不要怀疑你的眼睛就是白色的

05-11 11:30