iOS 8 Size Classes初探

简介: iOS 8 Size Classes初探发布于:2014-09-12 11:00阅读数:9872iOS8新特性:Size Classes,是对老式UI思路的全新抽象:把各个设备屏幕(iphone4,5,6, ipad,iwatch?)以及它们的屏幕旋转状态都抽象成屏幕Size的变化,将...

iOS 8 Size Classes初探

发布于:2014-09-12 11:00阅读数:9872

iOS8新特性:Size Classes,是对老式UI思路的全新抽象:把各个设备屏幕(iphone4,5,6, ipad,iwatch?)以及它们的屏幕旋转状态都抽象成屏幕Size的变化,将这些Size归纳成几个类别(Class)



(via sunnyxx的博客

 

iOS8新特性:Size Classes,是对老式UI思路的全新抽象:把各个设备屏幕(iphone4,5,6, ipad,iwatch?)以及它们的屏幕旋转状态都抽象成屏幕Size的变化,将这些Size归纳成几个类别(Class)

宽(正常,任意, 紧凑),高(正常,任意, 紧凑)

 

3x3共9种Size,每种Size都可以设置特定的一套布局,如果不特殊指定,默认是在(宽任意,高任意)模式下设置,且其他8种布局继承它。

 

听过有人说,我们不用学autolayout了,直接学Size Class就一步到位了。这个说法是不对的,因为Size Class在将屏幕分类后,执行布局的还是Autolayout。


Size Classes与Interface Builder

当然不出所料的是,Xcode6中Interface Builder对Size Class有了很强大的支持:

启用Size Class后,IB中就会出现Size Class切换的菜单

 

我们可以切换到wAny,hAny模式去编辑通用的控件和布局,也可以切换到某个特定Class,立刻可以预览到变化,于是有个问题:

 

假如iPad和iPhone的布局有差异,老式写法是分成ipad.storyboard和iphone.storyboard来分别写,这本身就是个bug,因为大部分控件其实并没差别,新Size Class解决这个问题了木?

 

答案是肯定的,Size Class的方案比老式的好了几条街:

 

IB中某个View的出现与否,约束的出现与否以及约束的值都是可以根据Size Class单独设置的,也就是说现在一个storyboard是9合1的。

 

比如下面有个Label,我只希望它出现在长宽紧缩的屏幕上时(脑补iwatch),这么勾选下就可以(出现或不出现被命名为”Installed”,这个选项可以从9个Size Class中多选)


Size Classes的xml文件改动

说到9合1的时候肯定会有疑问,这样的storyboard文件会不会很大?源文件会不会很乱导致多人开发经常冲突?

 

答案是不会的,源于apple对Size Class在xml中的描述方法是针对变化配置的,什么意思呢?对比下storyboard的xml源文件就知道了:

 

wAny,hAny模式下刚才只有一个Label的页面:

 

假如在wC,hC紧缩模式下设置不出现这个label时,在label的父view层级出现了下面的配置:

 

所以说ib中以附加的描述字段来表示哪些元素是被哪些Size Class包含或排除的,也正因为这样的描述方式,使得新的xml格式可以被低版本兼容(低版本不解析这个字段,但其他字段正常解析)

 

Size Classes与xcassets

既然storyboard变成了9合1,配套的xcassets必须也有所表示才行,xcode6后向xcassets中添加图片时增加了选择对应Size Classes的菜单,展开后会像下面一样:

 

通过符号表示确实不错 -对应紧缩,*对应Any,+对应宽松
(@3x是iphone6 plus)


总结

总的来说,iOS对UI这块的改动是跨时代性的,Autolayout的出现使得布局的复杂度减少到了View与View的关系上,再由根 View(也就是屏幕)指定frame,随后所有子View相对布局,把frame的概念归一化到根View的frame上;但有了Size Class后,根视图的frame概念也被移除了,这下整个app的UI和frame这个单词已然脱离关系,这也正是apple想要达到的目的。

CocoaChina是全球最大的苹果开发中文社区,官方微信每日定时推送各种精彩的研发教程资源和工具,介绍app推广营销经验,最新企业招聘和外包信息,以及Cocos2d引擎、Cocos Studio开发工具包的最新动态及培训信息。关注微信可以第一时间了解最新产品和服务动态,微信在手,天下我有!

请搜索微信号“CocoaChina”关注我们!

搜索CocoaChina微信公众号:CocoaChina






目录
相关文章
|
iOS开发
iOS开发技巧 - Size Class与iOS 8多屏幕适配(一)
0. 背景: 在iOS开发中,Auto Layout(自动布局)能解决大部分的屏幕适配问题。 但是当iPhone 6和iPhone 6 Plus发布以后, Auto Layout已经不能解决复杂的屏幕适配问题了, 因此, 在iOS 8以后苹果推出了Size Class, 它是基于Auto Layout技术的。
938 0
|
iOS开发 HTML5 移动开发
iOS 新特性分列式 之 iOS 8.x - 主要内容:应用扩展、手动对焦、Size Class
iOS 新特性分列式 之 iOS 8.x - 主要内容:应用扩展、手动对焦、Size Class 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。
1198 0
|
iOS开发 容器
iOS8开发~UI布局(二)storyboard中autolayout和size class的使用详解
<div class="article_title" style="margin:5px 0px; font-size:20px; line-height:30px; font-family:'Microsoft YaHei'"> <span style="font-family:Arial; font-size:14px; line-height:26px">一、概要:前一篇初步的描述
1266 0
|
iOS开发
iOS8开发~UI布局(一)初探Size Class
<div class="article_title" style="text-align:start; margin:5px 0px; line-height:30px"> <span style="text-align:right">一、新特性Size Class介绍</span> </div> <p style="margin-top:0px; margin-bottom:0px;
1329 0
|
2天前
|
开发框架 数据可视化 Java
iOS开发-SwiftUI简介
iOS开发-SwiftUI简介
|
10天前
|
IDE 开发工具 Android开发
安卓与iOS开发对比:平台选择对项目成功的影响
【9月更文挑战第10天】在移动应用开发的世界中,选择正确的平台是至关重要的。本文将深入探讨安卓和iOS这两大主要移动操作系统的开发环境,通过比较它们的市场份额、开发工具、编程语言和用户群体等方面,为开发者提供一个清晰的指南。我们将分析这两个平台的优势和劣势,并讨论如何根据项目需求和目标受众来做出最佳选择。无论你是初学者还是有经验的开发者,这篇文章都将帮助你更好地理解每个平台的特性,并指导你做出明智的决策。
|
8天前
|
API Android开发 iOS开发
安卓与iOS开发中的线程管理对比
【9月更文挑战第12天】在移动应用的世界中,安卓和iOS平台各自拥有庞大的用户群体。开发者们在这两个平台上构建应用时,线程管理是他们必须面对的关键挑战之一。本文将深入探讨两大平台在线程管理方面的异同,通过直观的代码示例,揭示它们各自的设计理念和实现方式,帮助读者更好地理解如何在安卓与iOS开发中高效地处理多线程任务。
|
10天前
|
开发框架 Android开发 iOS开发
探索安卓与iOS开发的差异:构建未来应用的指南
在移动应用开发的广阔天地中,安卓与iOS两大平台各占半壁江山。本文将深入浅出地对比这两大操作系统的开发环境、工具和用户体验设计,揭示它们在编程语言、开发工具以及市场定位上的根本差异。我们将从开发者的视角出发,逐步剖析如何根据项目需求和目标受众选择适合的平台,同时探讨跨平台开发框架的利与弊,为那些立志于打造下一个热门应用的开发者提供一份实用的指南。
26 5
|
10天前
|
开发工具 Android开发 iOS开发
安卓与iOS开发:平台选择的艺术与科学
在移动应用开发的广阔天地中,安卓与iOS两大平台如同东西方哲学的碰撞,既有共通之处又各具特色。本文将深入探讨这两个平台的设计理念、开发工具和市场定位,旨在为开发者提供一份简明扼要的指南,帮助他们在这场技术与商业的博弈中找到自己的道路。通过比较分析,我们将揭示每个平台的优势与局限,以及它们如何影响应用的性能、用户体验和市场接受度。无论你是初涉江湖的新手,还是经验丰富的老手,这篇文章都将为你的选择提供新的视角和思考。
24 5