iOS 8 Size Classes初探

OS8新特性,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想要达到的目的。

Farewell,frame和那些还奋战在手写UI的iOS coder们…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
xDisplay是一款在iOS 8系统上运行的应用程序,它允许用户将他们的iPhone或iPad设备转变为一个外接显示器。这个应用程序使用了AirPlay技术,可以无线地将用户的设备和电脑连接起来,并将设备的屏幕投射到电脑上。这样,用户就可以在电脑上扩展显示器的大小,提高工作效率。 xDisplay在iOS 8系统中提供了许多优点和便利。首先,它提供了无线连接,用户可以方便地将他们的设备与电脑进行连接,省去了繁琐的有线连接步骤。其次,由于它使用了AirPlay技术,用户可以将屏幕上的内容实时投射到电脑上,体验到更流畅的操作和更好的显示效果。此外,它还支持多点触控功能,用户可以同时通过触摸屏幕来在电脑上进行操作。 除此之外,xDisplay还提供了简单易用的界面和操作方式。用户只需下载并安装这个应用程序,然后将设备和电脑连接到同一个Wi-Fi网络上即可。然后,在电脑上启动xDisplay,并选择设备进行连接。连接成功后,用户就可以通过电脑上的显示器来查看和操作他们的设备。 总的来说,xDisplay是一个方便实用的应用程序,可以帮助用户将他们的iOS设备转变为外接显示器,提高工作效率和舒适度。尤其是在iOS 8系统中,它提供了更好的连接和显示效果,同时还有简单易用的界面和操作方式。无论是在工作还是娱乐中,xDisplay都是一个不错的选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值