zoukankan      html  css  js  c++  java
  • 开发者所需要知道的iOS7 SDK新特性

    转自http://beyondvincent.com/2013/06/11/ios7新特征汇总01新特征介绍/

    http://www.cocoachina.com/newbie/basic/2013/0612/6394.html

    无论是对于开发者或用户来说iOS7都是非常重要的一次更新,iOS7对UI进行了彻底的重新设计。另外为了创建2D和2.5D游戏,iOS7引进了一套全新的动画系统。在iOS7中,多任务的增强、点对点的连接,以及其它一些

    重要的特征都足以使iOS7意义非凡。

    下面我们就来细数一下iOS7的新特征:

    关键字用户界面的改变、多任务的增强、游戏、地图、AirDrop、应用程序间的音频、点对点的连接、一些新的Framework、已有Framework的增强、OC和弃用的一些API等。

    全新UI设计-用户界面的改变

    简单总结来说,新的UI变化改进有如下几点:

    1.状态栏,导航栏和应用实际展示内容不再界限:系统自带的应用都不再区分状态栏和navigation bar,

    而是用统一的颜色力求简洁。这也算是一种趋势。

    2.BarItem的按钮全部文字化:这点做的相当坚决,所有的导航和工具条按钮都取消了拟物化,原来的文

    字(比如“Edit”,“Done”之类)改为了简单的文字,原来的图标(比如新建或者删除)也做了简化。

    3.程序打开加入了动画:从主界面到图标所在位置的一个放大,同时显示应用的载入界面。

    4. 在用户界面设计中,新增了一个重要的概念:UIKit动力(UIKit Dynamics)。什么是UIKit动力?

    一句话:UIKit动力提供了一个模拟真实世界中力学相关的动画和交互系统。比如重力、碰撞和吸附等。

    UIKit动力具有可组合、可重用和声明式的特点。

    通过UIKit动力,在我们的程序中可以为UIView对象指定动力行为,以及让别的对象遵循UIDynamicItem协议——(遵循该协议的对象称为动力项[dynamic items])。动力行为通过将现实世界中的行为和特征与程序相结合(例如将重力加入程序的动画中),以提供一种增强用户体验的方法。在程序中利用UIKit提供的接口来实现力学行为,可以减少80%的代码量。

    关于详细代码实现请参考

    http://beyondvincent.com/2013/06/16/ios7新特征汇总05初窥uikit动力uikit-dynamics/

    UIKit Dynamics默认支持如下5种动力行为:

    吸附行为(UIAttachmentBehavior):有一个对象UIAttachmentBehavior,该对象用来指定两个

      动力项(项或点)之间的连接,当一个项或者点移动时,吸附的项也随之移动。当然,这个连接并不是完

      全是静态的(static),吸附的项有两个属性damping(阻尼)和oscillation(震荡),这两个属性决定了吸

      附项的行为是如何随时间而变化的。

    碰撞行为(UICollisionBehavior):通过对象UICollisionBehavior指定一个边界,并且让各个动力

       项,在该边界内参与碰撞。UICollisionBehavior对象还可以指定这些动力项适当的回应碰撞。

    重力行为(UIGravityBehavior):通过对象UIGravityBehavior给动力项指定一个重力矢量,具有重

       力矢量的动力项,会在重力矢量的方向上一直加速,直到与别的动力项产生了冲突或者,遇到了边界。

    推动行为(UIPushBehavior):通过对象UIPushBehavior给动力项指定一个持续的或者瞬时的力

     (force vector)。

    捕捉行为(UISnapBehavior):通过对象UISnapBehavior给动力项指定一个捕捉点。动力项会根据

       配置的效果,来抓住这一捕捉点。当动力行为被添加到animator(UIDynamicAnimator类的实例对象)时,动力行为就被激活。animator为动力行为的执行提供了上下文。动力项可以有多个行为,只不过所有这些行为都必须添加到相同的animator中。动力行为可以在任意时间内进行添加或移除。另外动力行为可以是组合的,也可以被继承。

    注意:这些动力行为是在二维空间进行的。更多关于动力行为的使用,请参考UIKit Framework Reference。

     

    5.另外还有Text Kit是一个功能齐全、更高级别的Framework——通过该Framework,可以对程序中的文本内容进行精致的排版。Text Kit能够将文本内容按照段落、列和页进行布局。可以很容易的让文本围绕着某个区域进行布局(例如图形),并且可以管理多种字体。值得一提的是,在iOS7中,已经将TextKit整合到所有基于文本的控件中,这样一来,在程序中,对文本的创建、编辑、修改和显示都非常的容易——不像在之前iOS中,

    需要更多的代码来实现。关于动力行为和Text Kit,随后,笔者会给出一些示例,敬请关注!

    多任务的增强

    iOS7中,应用程序的后台执行模型,新增了如下两种类型:

    1. fetch:如果应用程序需要从网络中有规律的下载新数据,那么现在可以通过向系统注册一下,使新数据的下载操作可以定期的被唤醒或者启动以在后台进行下载。注册方法为:在程序的Info.plist中,将UIBackgroundModes键值设置为fetch,然后在app delegate中,使用方法setMinimumBackgroundFetchInterval:来设置下载新数据操作之间的最小时间间隔。另外,必须在app delegate中实现application:performFetchWithCompletionHandler:方法以执行任意的下载。
    2. remote-notifaction:在iOS7之前,程序中使用的推送通知是用来给用户推送新的消息,而有新的消息到达时,如果需要获得消息相关更多内容时,还需要用户启动相应的程序,以在程序中获取新的消息内容,而现在在iOS7中,通过推送通知,可以启动一个后台下载操作任务。要使用这种模型,只需要将程序Info.plist文件中的UIBackgroundModes键值设置为remote-notification,然后在app delegate中实现application:didReceiveRemoteNotification:fetchCompletionHandler: 方法。

         无论是fetch或remote-notification后台执行模型,在适当的时机,都有可能被启动或者从休眠(suspended)状态转移到后台状态。就拿fetch后台模型来说,系统会根据当前可用的信息来来决定启动或者唤醒程序的最佳时机。例如,当网络条件不错,或者设备已经被唤醒的时候,会启动或唤醒程序以执行程序的fetch后台操作。再来看看remote-notification后台执行模型——当有一条新的推送通知到达设备时(在通知用户之前),程序可以先去下载新的消息内容,当内容都准备好之后,就可以通知用户了——可见,对于remote-notification后台执行模型,可以让用户把注意力都集中在内容上,这也符合本文开头提到的iOS7设计重心。

    在程序中,处理后台下载数据时,应用使用NSURLSession类。这个类对已有的NSURLConnection类进行了改进——针对初始化和处理NSURLRequest对象,提供了一个简单的、基于任务的接口。单个NSURLSession对象可以初始化多个下载和上传任务,并且通过它的delegate,可以处理来此服务器的任意身份认证请求。

    关于多任务的更多内容,在随后的博文中,笔者会进行详细的介绍,读者也可以查阅iOS App Programming Guide中的“App States and Multitasking”。

    提醒:本文的内容主要参考苹果官网提供的一份文档:What’s New in iOS 7(From My GitHub,From Apple),如果你英文好的话,建议你去阅读原文。

     

    本文将继续介绍iOS7中的新特征:游戏、地图和AirDrop。

     

    游戏方面

    iOS7 SDK极大加强了直接使用iOS SDK制作和分发游戏的体验,最主要的是引入了专门的游戏制作框架

    这主要体现在如下三个方面:

    Sprite Kit Framework
        iOS SDK终于有自己的精灵系统了。Sprite Kit Framework使用硬件加速的动画系统来表现2D和2.5D的游戏,它提供了制作游戏所需要的大部分的工具,包括图像渲染,动画系统,声音播放以及图像模拟的物理引擎。可以说这个框架是iOS SDK自带了一个较完备的2D游戏引擎,力图让开发者专注于更高层的实现和内容。和大多数游戏引擎一样,Sprite Kit Framework 的内容都按照场景(Scene)来分开组织,一个场景可以包括贴图对象,视频,形状,粒子效果甚至是CoreImage滤镜等等。相对于现有的2D引擎来说,由于Sprite Kit是在系统层级进行的优化,渲染时间等都由框架决定,因此应该会有比较高的效率。

    另外,Xcode还提供了创建粒子系统和贴图Atlas的工具。使用Xcode来管理粒子效果和贴图atlas,可以迅速在Sprite Kit中反应出来。

    更多关于如何使用Sprite Kit,读者可以参考Sprite Kit Programming Guide。苹果也提供了一个示例演示如何使用Sprite Kit:Explained Adventure(From Apple)。

    Game Controller Framework

    Game Controller Framework (GameController.framework)可以让你在程序中发现并对游戏控制器硬件进行配置。通过Game Controller Framework可以让iOS设备通过无线或者蓝牙进行连接。当控制器可用的时候,该Framework会通知你的程序。

    为Made-for-iPhone/iPod/iPad (MFi) game controller设计的硬件的对应的框架,可以让用户用来连接

    和控制专门的游戏硬件。参考WWDC 2013开场视频中开始的赛车演示。现在想到的是,也许不仅可以用于游戏…或者苹果之后会扩展其应用,因为使用普及率很高的iPhone作为物联网的入口,似乎会是很有前途的事情。

    更多相关信息可以参考Game Controller Programming Guide。

     

    GameCenter改进

    在iOS7中,苹果对游戏中心(Game Center)做了如下改进:

    1.给玩家提供一个与其它玩家互动的机会,即使目前还没有轮到该玩家。通过该功能,可以实现玩家之间的聊天、交易等(即使没有轮到玩家)。

    2.每个程序的排行榜限制已经从原来的25变为100.通过GKLeaderboardSet对象,可以对你的排行榜进行组织,并把上限增加至500。

    3.在游戏中进行挑战(做任务)的时候,可以为这个挑战添加条件限制。例如,在驾驶游戏中,指定必须使用相同的车辆。

    为了防止作弊,增加了认证的支持,以及其它有些功能。更多关于如何使用新的Game Center功能,请参考Game Center Programming Guide 。

     关于Game Kit Framework,请参考Game Kit Framework。

     

    多任务强化

    经常需要下载新内容的应用现在可以通过设置UIBackgroundModes为fetch来实现后台下载内容了,

    需要在AppDelegate里实现setMinimumBackgroundFetchInterval:

    application:performFetchWithCompletionHandler:来处理完成的下载,这个为后台运行

    代码提供了又一种选择。不过考虑到Apple如果继续严格审核的话,可能只有杂志报刊类应用能够取得

    这个权限吧。另外需要注意开发者仅只能指定一个最小间隔,最后下没下估计就得看系统娘的心情了。

    同样是后台下载,以前只能推送提醒用户进入应用下载,现在可以接到推送并在后台下载。

    UIBackgroundModes设为remote-notification,并实现

    application:didReceiveRemoteNotification:fetchCompletionHandler:

    为后台下载,开发者必须使用一个新的类NSURLSession,其实就是在NSURLConnection上加了

    个后台处理,使用类似,API十分简单,不再赘述。

     

    AirDrop
    这个是iOS7的重头新功能,用户可以用它来分享照片,文档,链接,或者其他数据给附近的设备。

    但是不需要特别的实现,被集成在了标准的UIActivityViewController里,并没有单独的API提供。

    数据的话,可以通过实现UIActivityItemSource接口后进行发送。大概苹果也不愿意看到超出他们

    控制的文件分享功能吧,毕竟这和iOS设计的初衷不一样。如果你不使用UIActivityViewController

    的话,可能是无法在应用里实装AirDrop功能了。

     

    地图 

    基于地图信息,苹果对Map Kit framework (MapKit.framework)做了大量的改进,并新增了不少功能。使用地图来显示的位置信息现在可以利用3D地图了,可以通过编程的方式来控制地图的视角。Map Kit还做了其它一些重要的改变:

    1.图层(Overlay)可以被放置在地图中不同的层中,这样就可以将图层放置在相关数据的上面或者下面。

    2.可以使用MKMapCamera对象在地图中增加一个位置、倾斜和航向信息。摄像头信息可以给地图增加3D视图体验。

    3.通过MKDirection类可以从苹果那里请求获得方向相关的线路信息。通过获得的线路信息可以创建一个图层并显示到地图中。

    4.MKGeodesicPolyline类可以参照地球的曲率,创建一个基于线条的图层。

    5.使用MKMapSnapshotter类可以捕捉基于地图的图片。

    6.目前可视化的图层是基于MKOverlayRenderer的,这取代了之前的图层视图,并提供了一个简单的渲染方法。

    7.可以使用MKTileOverlay和MKTileOverlayRenderer类来取代地图上已有的大头针(tile)。

     更多相关信息,请阅读Map Kit Framework Reference 。

    Inter-App Audio 应用间的音频

    Audio Unit framework (AudioUnit.framework)现在支持程序间的音频了——可以在同一台设备上不同的两个程序之间发送MIDI命令和音频流。例如,通过该功能,你可以使用一个程序来录制音乐,然后将录制的音乐音乐发送到另外一个能对音乐进行处理的程序中。在音源应用中声明一个AURemoteIO实例来标为Inter-App可用,在目标应用中使用新的发现接口来发现并获取音频。 想法很好,也算是在应用内共享迈出了一步,不过我对现在使用AudioUnit这样的低层级框架的应用数量表示不乐观。也许今后会有一些为更高层级设计的共享API提供给开发者使用。毕竟要从AudioUnit开始处理音频对于大多数开发者来说并不是一件很容易的事情。

     

    Media Accessibility framework (MediaAccessibility.framework):管理媒体文件中字幕

    (closed-caption)内容的显示。通过该Framework与settings的结合,可以让用户开启字幕的显示。

     

    点对点连接 Peer-to-Peer Connectivity

    这个数据传输API将允许用户发现附近的设备,在没有联网的情况下进行直接的通讯。

    可以看成是AirDrop不能直接使用的补偿,代价是需要自己实现。MultipeerConnectivity框架可以用来发现

    和连接附近的设备,并传输数据,而这一切并不需要有网络连接。可以看到Apple逐渐在文件共享方面一步步

    放开限制,但是当然所有这些都还是被限制在sandbox里的。

     

    Store Kit Framework

    Store Kit在内购方面采用了新的订单系统,这将可以实现对订单的本机验证。这是一次对应内购破解和有可

    能验证失败导致内购失败的更新,苹果希望藉此减少内购的实现流程,减少出错,同时遏制内购破解泛滥。

    前者可能没有问题,但是后者的话,因为objc的动态特性,决定了只要有越狱存在,内购破解也是早晚的事情。

    不过这一点确实方便了没有能力架设验证服务器的小开发者,这方面来说还是很好的。

    最后
    当然还有一些其他小改动,包括MessageUI里添加了附件按钮,Xcode开始支持模块了等等。完整的iOS7

    新特性列表可以在这里找到。最后一个好消息是,苹果放慢了废弃API的速度,

    这个版本并没有特别重要的API被标为Deprecated,Cheers。

     

     

     

     

     

     

  • 相关阅读:
    Linux 脚本编写基础
    Centos7下修复 视频播放器(先 安装VLC视频播放器)
    用CentOS 7打造合适的科研环境
    Storm与Spark:谁才是我们的实时处理利器
    Nutch 问题杂记
    三、多线程基础-自旋_AQS_多线程上下文
    二、多线程基础-乐观锁_悲观锁_重入锁_读写锁_CAS无锁机制_自旋锁
    一、多线程基础理论-概念_特性_分类_状态_线程池_线程数配置
    六、ibatis1.2.8查询性能优化,实现百万数据zip导出
    二十、oracle通过复合索引优化查询及不走索引的8种情况
  • 原文地址:https://www.cnblogs.com/jiangshiyong/p/3132738.html
Copyright © 2011-2022 走看看