iOS 7 是一个主要更新,UI被重新设计,另外 iOS7还引入新的动画系统来创建2D 2.5D的游戏。多任务强化,点对点链接 以及其他一些重要的特性。
iOS7中添加的框架主要有:
GameController
JavascriptCore
MediaAccessibility
MultipeerConnectivity=
SafariServices
SpriteKit
UI设计
在iOS 7 中UI被重新设计,在系统上的显然表现为,状态栏和navigation bar不再区分,barItem被文字化 程序打开放大效果等。
UIKit力学模型
新增了UIDynamicItem
委托,用来为UIView制定力学模型行为,当然其他任何对象都能通过实现这组接口来定义动力学行为,只不过在UIKit中可能应用最多。所谓动力学行为,是指将现实世界的我们常见的力学行为或者特性引入到UI中,比如重力等。通过实现UIDynamicItem,UIKit现在支持如下行为:
- UIAttachmentBehavior 连接两个实现了UIDynamicItem的物体(以下简称动力物体),一个物体移动时,另一个跟随移动
- UICollisionBehavior 指定边界,使两个动力物体可以进行碰撞
- UIGravityBehavior 顾名思义,为动力物体增加重力模拟
- UIPushBehavior 为动力物体施加持续的力
- UISnapBehavior 为动力物体指定一个附着点,想象一下类似挂一幅画在图钉上的感觉
如果有开发游戏的童鞋可能会觉得这些很多都是做游戏时候的需求,一种box2d之类的2D物理引擎的既视感跃然而出。没错的亲,动态UI,加上之后要介绍的Sprite Kit,极大的扩展了使用UIKit进行游戏开发的可能性。另外要注意UIDynamicItem不仅适用于UIKit,任何对象都可以实现接口来获得动态物体的一些特性,所以说用来做一些3D的或者其他奇怪有趣的事情也不是没有可能。如果觉得Cocos2D+box2d这样的组合使用起来不方便的话,现在动态UIKit+SpriteKit给出了新的选择。
游戏相关
iOS 7SDK引入游戏制作框架
Sprite KitFramework
Game Controller Framework
GameCenter
多任务强化
不为任务保持活跃状态 之前的后台任务是使用beginBackgroundTashExpriationHandler:方法来使得app在切换到后台之后仍然能保持运行一段时间,app可以用这个方法来确保一些很慢的工作在后台还能完成,如数据库操作 上传下载文件等。
应用可以在后台获取信息,之前的app是在打开应用之后进行数据获取,必定有一定的等待时间。每次都是这样。iOS7中加入的后台获取可让app在打开之前就有机会执行代码来获取数据,刷新UI。
推送唤醒
在iOS7之前 推送类型很单一,只能显示标题内容 指定声音等等。用户通过解锁进入应用,appdelegate通过推送打开应用的回调被调用,然后获取数据进行显示,这个和之前的后台无法获取信息相似。iOS 7 中有机会使得设备收到远程推送之后让系统唤醒设备和后台应用,然后执行一段代码准备数据和UI,然后提示用户有推送信息。这时候如果再进入应用将不需要任何的加载过程,
后台传输
iOS7 之前,iOS应用在大块数据下载的限制很多,只有应用在前台时才能保持下载,在后台时很可能断掉网络连接,如果想要完成较大数据下载 则需要打开你的app然后下载,iOS7 中引入了后台传输的相关方式,用来保证应用推出后数据下载或者上传能够继续进行。
地图
- MKMapCamera,可以将一个MKMapCamera对象添加到地图上,在指明位置,角度和方向后将呈现3D的样子…大概可以想象成一个数字版的Google街景..
- MKDirections 获取Apple提供的基于方向的路径,然后可以用来将路径绘制在自己的应用中。这可能对一些小的地图服务提供商产生冲击,但是还是那句话,地图是一个数据的世界,在拥有完备数据之前,Apple不是Google的对手。这个状况至少会持续好几年(也有可能是永远)。
- MKGeodesicPolyline 创建一个随地球曲率的线,并附加到地图上,完成一些视觉效果。
- MKMapSnapshotter 使用其拍摄基于地图的照片,也许各类签到类应用会用到
- 改变了overlay物件的渲染方式
已存在框架的加强
UIKit框架
UI界面加强
UIKit动力学模型加强
TextKit加强
UIView中添加
tintColor
UIViewCOntroller以下添加
viewController转场可以自定义,指定status bar的样式和可见性
UIMotionEffect定义运动效果的基本行为,定义了view是如何响应一个行为的。
imageNamed:方法支持检索存储在asset目录中的图片。
手势可动态指定依赖
UIFontDescriptor对象用属性的字典来描述一个字体。
添加新的手势UIScreenEdgePanGestureRecognizer 跟踪pan手势到边界位置
Inter-App Audio 应用间的音频
AudioUnit框架中加入了在同一台设备不同应用之间发送MIDI指令和传送音频的能力。比如在一个应用中使用AudioUnit录音,然后在另一个应用中打开以处理等。在音源应用中声明一个AURemoteIO实例来标为Inter-App可用,在目标应用中使用新的发现接口来发现并获取音频。
想法很好,也算是在应用内共享迈出了一步,不过我对现在使用AudioUnit这样的低层级框架的应用数量表示不乐观。也许今后会有一些为更高层级设计的共享API提供给开发者使用。毕竟要从AudioUnit开始处理音频对于大多数开发者来说并不是一件很容易的事情。
点对点连接 Peer-to-Peer Connectivity
可以看成是AirDrop不能直接使用的补偿,代价是需要自己实现。MultipeerConnectivity框架可以用来发现和连接附近的设备,并传输数据,而这一切并不需要有网络连接。可以看到Apple逐渐在文件共享方面一步步放开限制,但是当然所有这些都还是被限制在sandbox里的。
Store Kit Framework
Store Kit在内购方面采用了新的订单系统,这将可以实现对订单的本机验证。这是一次对应内购破解和有可能验证失败导致内购失败的更新,苹果希望藉此减少内购的实现流程,减少出错,同时遏制内购破解泛滥。前者可能没有问题,但是后者的话,因为objc的动态特性,决定了只要有越狱存在,内购破解也是早晚的事情。不过这一点确实方便了没有能力架设验证服务器的小开发者,这方面来说还是很好的。
iOS7.1的更新主要部分是
支持外部媒体播放器和OpenGL ES