在 iOS8 中,我们不用再像以前那样,一个页面新建多个 xib 文件来适配不同类型的屏幕,现在我们可以把各种尺寸屏幕的适配工作放在一个文件中完成,然后可以通过不同类别的 Size 来定制各种尺寸的界面。换句话说,你眼前的 Storyboard 不是一个普通的 Storyboard ,而是一个九合一的 Storyboard ,可以管理九种类型的屏幕。

对于宽度和高度而言,都有三种情况:紧凑 (Compact) 、任意 (Any) 、 正常 (Regular) ,所以一共有3*3=9个类别。

在设置 Size Class 的时候页面会有提示。默认情况下宽和高都为Any,如下图。

我们可以从上图Size Class设置界面看到,上方文字Any Width Any Height就是表示宽和高都为任意;下方文字For all layouts 意思显然就是适用于所有尺寸。

Size Class 的作用是将不同尺寸的屏幕进行分类处理,而最后进行布局管理的还是Autolayout。

现在我们做一个小实验,首先向视图中加入一个居中的button按钮,如下图所示

这时候 我们再进入Size Class的设置界面,将Size设置为如下图所示

从Size Class设置界面的上方文字可以看到,此时,宽度是正常的,高度是紧凑的;从下方文字可以看到For 5.5inch iPhones in landscape。意思即为适用于5.5寸iPhone横屏,那不就是iPhone6+横屏嘛。(至于其他的Size,我就不再演示,只演示这一个,我想大家都可以举一反三的)。我们这时候再向屏幕中假如一个按钮button,如下图

这时运行程序就可以看到效果,我们第一次添加的按钮,无论是用iPhone4,5还是6等都会出现,但是第二次添加的按钮,只有在iphone6+的横屏的情况下才会出现。我想大家应该明白为什么第二个按钮只会在iPhone6+上面显示了吧。这我就不再解释了。

演示结果(iphone6+竖屏和横屏)

有网友问我如果一个控件在不同的设备尺寸上有不同布局,那应该怎么做。。接下来就解释一下。前面说话过Size Class的作用仅仅是讲不同尺寸的屏幕进行分类处理,而最后进行布局管理的始终都是AutoLayout。所以如果想让一个控件在不同尺寸有不同的布局,肯定是需要修改AutoLayout。

我们还回到默认的Size界面,下图的AutoLayout是我之前已经添加上的。我现在的需求是让想让页面中的那个Button按钮在iPhone6+横屏中 距离他的父视图的顶部是0,而不是现在的121.参照下图

 接下来我们讲Size改为只适用于iphone6+横屏的尺寸。然后点击我们要修改的那个约束,可以看到约束的左边有一个加号
点击加号, 选择iPhone6+横屏时的Size ,然后修改它的值,把它的值改为0。如下图
修改完之后运行(效果如下)
按照这个方法,你就可以修改控件在不同尺寸下的布局了。
 
 
 
 

手把手教你使用Size Class的更多相关文章

  1. 手把手教你做个人 app

    我们都知道,开发一个app很大程度依赖服务端:服务端提供接口数据,然后我们展示:另外,开发一个app,还需要美工协助切图.没了接口,没了美工,app似乎只能做成单机版或工具类app,真的是这样的吗?先 ...

  2. 手把手教你接口自动化测试 – SoapUI & Groovy

    手把手教你接口自动化测试 – SoapUI & Groovy http://www.cnblogs.com/wade-xu/p/4236295.html 关键词:SoapUI接口测试,接口自动 ...

  3. 手把手教你如何搭建iOS项目基本框架

    手把手教你如何搭建iOS项目基本框架 今天我们来谈谈如何搭建框架,框架需要做一些什么. 第一步:找到我们的目标我们的目标是让其他开发人员拿到手后即可写页面,不再需要考虑其他的问题. 第二步:我们需要做 ...

  4. iOS回顾笔记(05) -- 手把手教你封装一个广告轮播图框架

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  5. [原创]手把手教你写网络爬虫(5):PhantomJS实战

    手把手教你写网络爬虫(5) 作者:拓海 摘要:从零开始写爬虫,初学者的速成指南! 封面: 大家好!从今天开始,我要与大家一起打造一个属于我们自己的分布式爬虫平台,同时也会对涉及到的技术进行详细介绍.大 ...

  6. 【转】手把手教你读取Android版微信和手Q的聊天记录(仅作技术研究学习)

    1.引言 特别说明:本文内容仅用于即时通讯技术研究和学习之用,请勿用于非法用途.如本文内容有不妥之处,请联系JackJiang进行处理!   我司有关部门为了获取黑产群的动态,有同事潜伏在大量的黑产群 ...

  7. 用Python手把手教你搭一个Transformer!

    来源商业新知网,原标题:百闻不如一码!手把手教你用Python搭一个Transformer 与基于RNN的方法相比,Transformer 不需要循环,主要是由Attention 机制组成,因而可以充 ...

  8. 手把手教你读取Android版微信和手Q的聊天记录(仅作技术研究学习)

    1.引言 特别说明:本文内容仅用于即时通讯技术研究和学习之用,请勿用于非法用途.如本文内容有不妥之处,请联系JackJiang进行处理!   我司有关部门为了获取黑产群的动态,有同事潜伏在大量的黑产群 ...

  9. 手把手教你 Mockito 的使用

    什么是 Mockito Mockito 是一个强大的用于 Java 开发的模拟测试框架, 通过 Mockito 我们可以创建和配置 Mock 对象, 进而简化有外部依赖的类的测试.使用 Mockito ...

随机推荐

  1. Apache Spark Streaming的优点

    Apache Spark Streaming的优点: (1)优势及特点 1)多范式数据分析管道:能和 Spark 生态系统其他组件融合,实现交互查询和机器学习等多范式组合处理. 2)扩展性:可以运行在 ...

  2. 软件工程——PairProject

    结对编程组员: 马辰     11061178 柴泽华  11061153 1)    照至少一张照片, 展现两人在一起合作编程的情况. 结对编程的优点 1)在编程过程中,任何一段代码都不断地复审,同 ...

  3. Linux 命令之last命令详解

    last:命令解释show listing of last logged in users 指令所在路径:/usr/bin/last 命令输出字段介绍: 第一列:用户名 第二列:终端位置.pts/0 ...

  4. flask中的request.form对象方法

    'add','clear','copy','deepcopy','fromkeys','get','gtlist','has_key','items','iteritems','iterkeys',' ...

  5. CentOS 搭建LNMP服务器和LAMP服务器

    CentOS 搭建LNMP服务器 方法一:yum安装 1.更新YUM源 wget http://www.atomicorp.com/installers/atomic   #下载atomic自动更新Y ...

  6. Umbraco 上传文件到另一个文件夹,而不是media files

    If you want to upload there media files to another place in the same instance of IIS, for example a ...

  7. HDU1874畅通工程续(floyd||dijkstra)

    看了看floyd和dijkstra,然后就找了两个练习来捉 #include<iostream> #include<stdio.h> #include<string.h& ...

  8. [转]省市二级联动(纯js实现)

    转至:http://www.jb51.net/article/41556.htm 实现原理: set_city("省名称",市select对象); 判断市select对象是否为空, ...

  9. npm package 装包匹配原则

    经常看到package.json 里面有这样的devDependencies: "devDependencies": { "@angular/common": ...

  10. UVA 1600

    Description A robot has to patrol around a rectangular area which is in a form of mxn grid (m rows a ...