iOS用SizeClasses进行不同型号、横竖屏下的不同布局适配(2018.7)

作者 : 开心源码 本文共2534个字,预计阅读时间需要7分钟 发布时间: 2022-05-11 共94人阅读

一、什么是SizeClasses

SizeClasses 是从iOS 8开始,Apple在应使用界面的可视化设计上增加的一个新的特性。

SizeClasses认为:对于任何设施来说,界面的宽度和高度都只分为三种形容:紧凑,任意和宽松。这样开发者便可以无视设施具体的尺寸,而是对这两类和它们的组合进行适配。

Apple共推出了frame 、autoresizing、autolayout、SizeClasses等布局方式。

  • frame:直接写坐标。
  • autoresizing: 根据父控件frame发生改变,子控件跟着一起改变。
  • autolayout:自动布局。
  • size Classes:发现屏幕变的太多样化,界面不得不统一。

SizeClasses仅仅是对屏幕进行了分类, 真正排布UI元素还得用autolayout。

用了SizeClasses不再有横竖屏的概念, 只有屏幕尺寸的概念;不再有具体尺寸的概念, 只有笼统尺寸的概念。

二、SizeClasses的表示方法

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

  1. Compact : 紧凑(小)
  2. Any : 任意
  3. Regular : 宽松(大)

SizeClasses表示与设施屏幕对应关系

  1. iPhone4S,iPhone5/5s,iPhone6
  • 竖屏:(w:Compact h:Regular)
  • 横屏:(w:Compact h:Compact)
  1. iPhone6 Plus
  • 竖屏:(w:Compact h:Regular)
  • 横屏:(w:Regular h:Compact)
  1. iPad
  • 竖屏:(w:Regular h:Regular)
  • 横屏:(w:Regular h:Regular)
  1. Apple Watch(猜测)
  • 竖屏:(w:Compact h:Compact)
  • 横屏:(w:Compact h:Compact)

以上关系不必记住,打开底部的编辑器通,过点击各手机、屏幕方向,就能查看横竖屏情况下w和h的表示方法。
比方在iPhone8 plus的横屏下是w:R h:C。

w:R h:C

三、SizeClasses的用方法

一般情况下,一个IB(xib/storyboard)文件会是一个竖屏显示的某机型显示效果,你所增加的束缚,会是所有机型所有屏幕方向上的束缚。你可以通过底部的view as进行切换机型和屏幕方向进行效果预览。

想要增加其余机型或者者屏幕方向上的束缚,需要先进去编辑模式,点击view as后,出现如下图的面板

编辑面板

点击Vary for Traits进入编辑模式,弹出了Width和Height选项,前面打对号就锁定当前的这个属性。

Vary for Traits

通过点击“?”可以查看Apple的文档,使用白话来讲,步骤就是

  1. 在view as选择当前的模式
  2. 点击Vary for Traits选择编辑模式
  3. 查看受影响的模式
  4. 进入编辑模式进行编辑,而后结束编辑

这个时候即可以对束缚进行编辑了。
选取确定之后整个SizeClasses选项框就变成蓝色的,也就是进入了编辑模式。点击任意位置能让弹窗消失。

蓝色表示进入了编辑模式
注意:
只有当您进入了编辑模式,才能对特殊模式下的束缚进行增删改等操作,否则束缚将增加到所有的模式下。

在view as里切换效果后,可在束缚里通过点选切换Constrats选项,看到当前模式或者者所有模式的束缚。
但是通过切换只是查看此模式的束缚,而不是进入当前模式的编辑状态

切换模式查看束缚

四、Vary for Traits 怎样选

通过点击Vary for Traits进入编辑模式,弹出了Width和Height选项,前面打对号就锁定当前的这个属性。
锁定模式后,即可以开始编辑束缚,这些束缚就会在当前受影响的显示模式下生效。

比方已经锁定了当前模式为w:Regular h:Compact:
根据本文[二、SizeClasses的表示方法][SizeClasses表示与设施屏幕对应关系]可知,
锁定了w:Regular h:Compact模式后编辑的束缚,将会对iphone的Plus机型横屏模式生效。

举几个例子来说明Vary for Traits 该怎样选:

1. 什么都不选

默认
什么都不选的时候,默认为(),即通使用界面,所有尺寸设施通使用。我们通过Device和Orientation可以组合出所有尺寸设施的横竖屏情况。

2. 在view as选择显示wC的时候选择Width

即竖屏模式下,选择Width,表示锁定当前Width的模式,即表示(C,*)。

wC时锁定Width

(C,*)的显示模式有(C,C)和(C,R),通过Size Class类型判断可以得到是20种:

  1. iPhone竖屏 (C,R)5种
  2. iPhone横屏 (C,C)4种
  3. iPad splitView下,显示区域小于2/3的,(C,R)11种

当然,编辑面板中的显示,受影响的模式的确为20种,可以通过点击查看受影响的模式有哪些。

3. 在view as上显示hC的时候选择Height

即横屏模式下,选择Height,表示锁定当前Height的模式,表示(*,C)。

hC时锁定Height

(*,C)的显示模式有(C,C)和(R,C),通过Size Class类型判断可以得到是26种:
原理一样,不再列举,自行动手查看结果。

自己动手,丰衣足食,其余情况不再列举…… ??

UIStackView中的SizeClasse

在iOS9之后,Apple推出了UIStackView ,一个更方便的布局方式。UIStackView会管理其子视图的布局,并帮我们自动布局束缚。也就是说,这些子视图能够适应不同的屏幕尺寸。
我们在这里不进行探讨UIStackView的使用法。

UIStackView既然自动布局其子视图,那么是不是有关于SizeClasse的属性呢?

当然有了,比方最常见的需求,想竖屏的时候竖着显示,横屏的时候横着显示,只要要在UIStackView设置Axis点击左侧“+”增加一个SizeClasse的模式就可。

image.png

您能否发现了,在本文的截图里,在横竖屏模式下,除了布局不同,图片也是不同的,更多关于SizeClasse的操作秀,请移步:
iOS用Assets配合SizeClasses横竖屏显示不同图片

DEMO代码下载: xueyongwei/SizeClassesDemo

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » iOS用SizeClasses进行不同型号、横竖屏下的不同布局适配(2018.7)

发表回复