iOS 8 SizeClass同Auto Layout的使用

在屏幕越来越多的苹果圈里,就算单单是做手机应用,在屏幕尺寸的判断上也不再是一个if就能解决的问题。在iOS8上apple新出了sizeClass这一功能配合以前的Autolayout使用,完美的解决了屏幕适配的问题。
SizeClass将屏幕的宽度和高度都抽象为三种情况:紧凑 (Compact) 、任意 (Any) 、 正常 (Regular),两两组合下,一共有9种类别,所以SizeClass看起来就像一个可以随意切换屏幕的九宫格,在设置 Size Class 的时候页面会提示当前界面适配哪种屏幕。这样把各种尺寸的界面放在一个Storyboard中,我们在为各种屏幕做适配工作的时候就可以在一个文件中完成,然后根据不同设备屏幕大小的不同进行调整。

新建一个项目,设备选择Universal,默认的都是启用了SizeClass 和Autolayout ,Storyboard的默认尺寸宽高均为 Any:

在(w:Any | h: Any)下添加一个按钮到Storyboard上:

SizeClass的作用是将不同尺寸的屏幕抽象出来进行分类处理,后面进行布局管理的还是Autolayout,接下来开始向按钮添加约束,点击右键选中按钮,向上拖(control键+左键向上拖也可以达到这个效果),选择“Top Space to Top Layout Guide”约束按钮距离屏幕顶部的距离,确定按钮的Y


添加第一个约束后,左边视图出现一个红色剪头提示:

点进去,系统提示X也需要约束

右键选中按钮向左拖动(或者control键+左键向左拖)选择"Leading Space to Container Margin”,确定按钮的X:

这时左上角的红色错误已经消失,剩下一个警告,提示预期的按钮大小和实际按钮大小不一致:

右键选中按钮,拖动到自己会出现下图,选择width和height固定按钮的宽高:

或者点击下方的按钮,将width和height都勾上,然后点击 add 2 constraints:

这样下来对这个按钮的约束就完成了,左上角的警告也消除,点击按钮,可以在右边看到按钮上的约束并修改约束值:

随意选中一个约束,可以在右边去掉Installed前面的√,点击加号从sizeClass的9中界面类型中选择在哪种类型的界面隐藏或显示此约束:

刚刚都是在单独的讲解SizeClass和AutoLayout,现在将它们联合起来进行屏幕适配,打开九宫格,选择iPhone屏(w:Compact | h:Any):

在上面放几个label:



接下来将屏幕切换到iPad(w:Regular | h:Regular),可以看到在iPad界面工作时,iPhone界面下拖的label是灰色的,表示不可用。

接下来就让程序在iphong和iPad上分别跑起来:

如果有童鞋新建的项目只选择了iPhone的话,那么不论你在iPad屏上怎么设置模拟器上显示出来的都是在iPhone上设计的样式(血泪教训,当时还认为自己环境有问题)依照这个功能,我们就能在iPhone和iPad上充分利用屏幕的特性设计UI了。
想要删除某个屏幕上的约束用 command+delete键删除,这样就只是在iPhone屏上删除掉此约束,显示为灰色,表示不可用其他尺寸不受影响。

选择iphone屏,在上面新建一个按钮:

右键选中黄色按钮拖动到红色按钮,选择Horizontal Spacing(设置黄色按钮到红色按钮的横向间距)确定X:

点开左边的错误,提示Y也需要约束:

右键向上拖动按钮,选择“Top Space to Top Layout Guide”,确定Y:

现在又剩下一个警告,提示预期的按钮大小和实际按钮大小不一致,这次我们把黄色按钮的大小约束设置到红色按钮上去,让它们一样大小:

右键拖动到红色按钮,选择宽,高相等:

点开左边的警告,选择update frame,更新框架:

更新后的界面应该是这个样子的:

和想象中有点不一样,黄色按钮低了一点,在右边修改黄色按钮到顶部的长度和红色按钮一样:

这下就没问题了:

大小除了宽高相等之外,还可以在设置中按比例设置两个按钮的宽高(可自定义输入比例):


对于有特殊需求的还可以选择”Aspect Ration“设置两个按钮宽和高的比例进行大小设置:

当然,如果要进行宽高比例进行大小约束,前面设置的大小约束就要删除掉,不然会造成约束冲突,总之,约束就是为了确定一个控件在屏幕上的唯一位置,确定X,Y,然后赋大小。
因为自己也是学了之后没有进行项目就写的这篇博客,可能大家看着会感觉很混乱,没水平,有错误,但也是自己对这个知识点的一个理解了,希望能让大家有所收获,提出错误和不足之处。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值