iOS7更新了不少引人注目的功能。用户界面彻底从新设计了。iOS7为开发2D,2.5D游戏引入了全新的动画系统。增强多线程,点对点链接,以及许多其余重要的功能让iOS7成为有史以来最有意义的一次发布。服务器
这边文章总结了iOS7开发相关的特性。这个版本大操做系统能够再目前的iOS设备上运行。另外,关于关键的新技术,这篇文章也列出了详细介绍这些特性的文章。网络
用户界面的改变多线程
iOS7包含了不少新特性来帮助你们建立友好的用户界面app
UI设计框架
iOS7用户界面彻底从新设计了。纵观整个系统,不只注重了功能,也注重了用户内容的设计。半透明,精致的视觉触动,流动,逼真的运动感应,层次感,和灵活的用户体验。无论你是建立一个新的APP或者更新现有的,设计的时候记住这些特性。ide
用iOS7SDK编译的APP在iOS7上运行时都会自动展示新的界面。若是在界面中使用了自动适应尺寸和位置,这些界面也会自动布局。不过也许仍然会有增长的工做须要作来让界面按照预期的展示。一样的,若是自定义了界面,也须要更新来更好的适应新的界面。工具
关于和使用iOS7的优点来设计APP,查看介绍iOS7 Design Resources.布局
界面的动态行为字体
App如今能够为UIView对象以及那些实现了UIDynamicItem协议的对象指定动态行为。(实现了这个协议的对象被叫作dynamic items.)动态行为提供了一个优化APP用户体验的方式,就好像真是世界的行为和特性(好比重力)同样的动画。UIKit支持下面的动态行为:fetch
动态行为在被加到一个animator对象时就生效了,animator对象是UIDynamicAnimator类的实例。animator为动态行为提供了上下文。一个动态对象能够有多个动态行为,可是这全部的动态行为必须在同一个animator对象中作动画。
想了解更多能够实现的东西的话,查看UIKit Framework Reference.
Text Kit
Text Kit是一个管理字符串和排版的工具集合。Text Kit能够在段落,列,以及页上排版有样式的字符串。它能够容易的在文字周围添加图片。也可使用多种字体。Text kit也能够和UIKit文字相关的控件交互,这样可让APP更容易的建立,编辑,显示,存储字符串。而且使用更少的代码。
Text Kit包含了基于已有的类的新的类以及一些扩展,包括:
更新关于Text Kit的内容,参考Text Programming Guide for iOS.
支持64位
APP能够被编译为64位的了。全部的系统库和框架都已是64位的了,这意味着他们既能够运行32位APP也能够运行64位APP。当APP被编译位64位时,因为在64位模式下有额外的处理器资源,APP能够运行的更快。
iOS使用LP64模式,和OS X以及64位UNIX系统同样,这意味着移植代码更方便。更多关于iOS64位运行时和如何写64位APP,查看64-Bit Transition Guide for Cocoa Touch.
多线程增强
iOS7支持两种新的后台运行模式:
常常链接服务器来更新内容的APP,能够经过向系统注册来周期性的在后台获取内容。要注册的话,在APP的Info.plist文件中包含UIBackgroundModes,值设为fetch。而后,当APP启动后,调用setMinimumBackgroundFetchInterval:方法来设置接收更新消息的频率。最后,必需要在APP delegate中实现application:performFetchWithCompletionHandler:方法。
经过推送来通知用户有新消息的APP能够在后台获取消息。要支持这个模式的话,在APP Info.plist文件中包含UIBackgroundModes,值设为remote-norification。一样须要在APP delegate中实现application:didReceiveRemoteNotification:fetchCompletionHandler;方法。
支持fetch或者remote-notification后来模式的APP可能会在一个模式的时机被启动或者从暂停模式移动到后台模式。在fetch后台模式,系统会根据当前信息来决定最好的启动或唤醒APP的时机。例如,在网络状态很好或者设备已经启动。你也能够悄悄的推送消息,也就是不显示弹出框的推送,这样就不会打扰用户。
对于少许内容的更新,使用NSURLRequest。要在后台上传或下载大量内容的话,使用NSURLSession。这个类增强了NSURLConnection,它提供一个简单的,基于任务接口来初始化和执行NSURLRequest。一个NSURLSession对象能够初始化多个上传下载任务,而且可使用回调来处理服务器的身份认证请求。
更多关于新的后来运行的资料,参考iOS App Programming Guide 中的 App States and Multitasking
游戏
iOS7增强了游戏支持
Sprite Kit Framework
Sprite Kit Framework提供了一个硬件加速的动画系统来优化2D,2.5D游戏。Sprite Kit提供了游戏须要的大多数基数设施,包括图形渲染动画系统,声音回放,物理模拟引擎。Sprite Kit把你从这些事情中解放出来,你能够专一于设计游戏的内容和更上层的交互。
Sprite Kit APP中的内容被放到了场景中。一个场景能够包含文字对象,声音,形状,图片滤镜以及其余的效果。Sprite Kit获取这些对象而后以最效率的方式显示在屏幕上。当须要对场景中的内容作动画时,可使用Sprite Kit来指定想实现的操做,或者可使用模拟物理引擎来定义物理行为(好比重力,吸引或排斥)。
除了Sprite Kit,还可使用Xcode工具建立粒子效果和纹理效果。可使用Xcode工具来管理APP资源和快速更新Sprite Kit场景。
更多关于如何使用Sprite Kit,查看Sprite Kit Programming Guide.要查看如何使用Sprite Kit来建立APP,查看code:Explained Adventure.
Game Controller Framework
Game Controller Framework 能够发现和配置基于iPhone/iPod/iPad的游戏控制器设备。游戏控制器能够直接物理链接到iOS设备上,也能够经过蓝牙无线链接。Game Controller Framework在有控制器可用时通知APP,也可让你选择那个控制器是和APP相关的。
更多关于支持游戏控制器的信息,查看Game Controller Programming Guide.
Game Center 增强
游戏中心包含如下增强:
回合制的游戏能够支持一个新特性叫作exchanges.Exchanges可让玩家执行操做,就算不是在他的回合。可使用这个功能实时的轮回,玩家聊天,和其余玩家交易。
单个APP的排行榜限制从25个增长到100个.也可使用GKLeaderboardSet对象来管理排行榜,这样能够增长到500。
能够定义挑战的前提条件。好比,赛车比赛能够定义一个时间的挑战,前提是玩家必须使用一样的车。
增强了认证机制,也添加了其余特性来方式欺骗。
更多关于若是使用游戏中心的属性,查看Game Center Programming Guide.更多关于Game Kit framework的信息,查看Game Kit Framework Reference.
地图
Map Kit Framework加入了不少优化和基于地图信息的新功能。使用地图显示地理位置信息的APP如今可使用地图APP中的3D地图。包括用程序控制如何显示。Map Kit也在下面这些方面作了增强:
Overlays在地图中能够被放在不一样的层中,这样他们根据数据不一样看起来有前有后。
能够在地图上实现一个MKMapCamera对象,这样能够添加位置,各类角度的,和导航信息。指定的相机对象在地图上展示一个3D的效果。
MKDirections类能够从Apple请求导航路线相关的信息。可使用那些信息建立overlay显示在本身的地图上。
MKGeodesicPolyline类能够建立一个根据地球曲率的线overlay。
App可使用MKMapSnapshotter类开捕捉基于地理位置的图片。
基于MKOverlayRenderer类的overlay视觉展现,替换了之前的overlay界面,它提供一个更简单的渲染实现。
APP如今能够扩展或者替换map上已有的图块,经过使用MKTileOverlay和MKTileOverlayRenderer类
更多关于Map Kit的信息,查看Map Kit Framework Reference.
AirDrop
AirDrop可让用户和附近的设备分享照片,文件,url以及其余各类数据。AirDrop封装在UIActivityViewController类中。这个类为展现你指定的不一样内容,显示不一样的选项。若是如今尚未使用这个类的话,能够考虑在界面上加入这个选项。
要接收经过AirDrop发送的文件,须要作下面的事情:
在Xcode中,声明APP支持的文件类型。(在Info.plist中)系统经过这个信息来决定APP是否能打开指定的文件。
在APP回调中实现application:openURL:sourceApplication:annotation:方法。(有新文件收到时,系统会调用这个方法)。
发送到APP的文件被放在APP的home文件夹下的Documents/Inbox中。若是打算修改文件,须要在修改以前把文件移到其余地方。(系统只容许APP读和删除这个文件夹下的文件)存储在这个文件夹下的文件会使用数据保护加密,因此你必需要处理设备锁上时数据不能访问的问题。
更多关于使用activity view controller分享数据的信息,查看UIActivityViewController Class Reference.
Inter-App Audio
Audio Unit Framework增长了支持跨应用音频,它可让同一个设备上的APP之间发送MIDI命令和声音流。例如,能够用这个特性来让一个APP录来自另一个乐器APP发出的声音,或者把声音发送给另外的APP来处理。要发送app的声音数据,公用的I/O(AURemoteIO)对其余进程是可见的。要使用其余APP的声音,使用iOS7的发现音频组建接口。
更多关于新接口的信息,查看头文件,和Audio Unit Framework Reference。
点对点链接
Multipeer Connectivity framework 支持发现附近的设备而且不须要网络直接和这些设备通信。这个框架能够容易的建立多点会话,实现可靠顺序数据传输和实时数据传输。
这个框架提供了代码级别和界面级别的选择来发现和管理网络服务。APP能够在用户界面中整合MCBrowserViewController类来列出设备让用户选择。一样,也可使用MCNearbyServiceBrowser类来经过代码搜索和管理设备。
更多信息,查看Multipeer Connectivity Framework Reference.
新的框架
iOS7包含下面一些新框架
游戏框架(GameController.framework)提供了和游戏相关硬件交互的接口.查看Game Controller Framework
精灵框架(SpriteKit.framwork)提供了基于精灵的动画和图形渲染.查看Sprite Kit Framework
多点链接框架(MultipeerConnectivity.framework)为APP提供了点对点网络链接.查看Peer-to-Peer Connectivity.
JavaScript核心框架(JavaScriptCore.framework)提供了Objective-c封装的标准JavaScript对象的类。
使用这个框架能够执行JavaScript代码和解析JSON数据。更多信息,查看框架的头文件。
多媒体框架(MediaAccessibility.framework)能够管理多媒体文件是否显示字幕。这个框架使用一些新的设置来让用户实现隐藏字幕。
Safari服务框架(SafariServices.framwork)支持使用代码添加阅读列表到Safari.更多信息,查看框架的头文件。
以及加强了一些现有的框架