IOS-IOS7小计

21 篇文章 0 订阅

以下内容转载自 http://www.cocoachina.com/special/ios7/

在用户界面设计中,新增了一个重要的概念:UIKit动力(UIKit Dynamics)。通过UIKit动力,在我们的程序中可以为UIView对象指定动力行为,以及让别的对象遵循UIDynamicItem协议——(遵循该协议的对象称为动力项[dynamic items])。动力行为通过将现实世界中的行为和特征与程序相结合(例如将重力加入程序的动画中),以提供一种增强用户体验的方法。UIKit默认支持如下5种动力行为:

1.吸附行为(UIAttachmentBehavior):有一个对象UIAttachmentBehavior,该对象用来指定两个动力项(项或点)之间的连接,当一个项或者点移动时,吸附的项也随之移动。当然,这个连接并不是完全是静态的(static),吸附的项有两个属性damping(阻尼)和oscillation(震荡),这两个属性决定了吸附项的行为是如何随时间而变化的

2.碰撞行为(UICollisionBehavior):通过对象UICollisionBehavior指定一个边界,并且让各个动力项,在该边界内参与碰撞。UICollisionBehavior对象还可以指定这些动力项适当的回应碰撞。

3.重力行为(UIGravityBehavior):通过对象UIGravityBehavior给动力项指定一个重力矢量,具有重力矢量的动力项,会在重力矢量的方向上一直加速,直到与别的动力项产生了冲突或者,遇到了边界。

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

5.捕捉行为(UISnapBehavior):通过对象UISnapBehavior给动力项指定一个捕捉点。动力项会根据配置的效果,来抓住这一捕捉点

当动力行为被添加到animator(UIDynamicAnimator类的实例对象)时,动力行为就被激活。animator为动力行为的执行提供了上下文。动力项可以有多个行为,只不过所有这些行为都必须添加到相同的animator中。

Text Kit

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

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,可以处理来此服务器的任意身份认证请求

游戏方面

Sprite Kit Framework,除了Sprite  Kit Framework,苹果还提供了Xcode工具来创建粒子发射效果和纹理集合。通过Xcode工具可以管理程序的assets,以及快速的更新Sprite Kit场景。

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

地图的改进

1.图层(Overlay)可以被放置在地图中不同的层中,这样就可以将图层放置在相关数据的上面或者下面。2.可以使用MKMapCamera对象在地图中增加一个位置、倾斜和航向信息。摄像头信息可以给地图增加3D视图体验。3.通过MKDirection类可以从苹果那里请求获得方向相关的线路信息。通过获得的线路信息可以创建一个图层并显示到地图中。4.MKGeodesicPolyline类可以参照地球的曲率,创建一个基于线条的图层。5.使用MKMapSnapshotter类可以捕捉基于地图的图片。6.目前可视化的图层是基于MKOverlayRenderer的,这取代了之前的图层视图,并提供了一个简单的渲染方法。7.可以使用MKTileOverlay和MKTileOverlayRenderer类来取代地图上已有的大头针(tile)。更多相关信息,请阅读Map Kit Framework Reference 。

AirDrop

通过AirDrop,用户可以给附近的iOS设备分享图片、文档、URL以及其它有些数据。AirDrop支持内置到已有的UIActivityViewController中——这个类会根据分享的不同数据显示出不同的选项。苹果建议:如果你的程序中还没有使用这个类,请考虑将其添加到程序中。更多关于利用activity view controller来访分享数据的信息,请参考UIActivityViewController Class Reference

程序间的音频(inter-App Audio)

Audio Unit framework (AudioUnit.framework)现在支持程序间的音频了——可以在同一台设备上不同的两个程序之间发送MIDI命令和音频流。例如,通过该功能,你可以使用一个程序来录制音乐,然后将录制的音乐音乐发送到另外一个能对音乐进行处理的程序中。
  为了公开(vend)你程序中的音频数据,需要发布一个AURemoteIO实例来充当音频组件——对其它进程是可见的。在iOS7里面,要在另外一个程序中使用程序间的音频功能,请使用音频组件发现接口。更多相关内容请看:Audio Toolbox Framework Reference

点对点的连接
通过Multipeer Connectivity framework (MultipeerConnectivity.framework)可以查找附近的设备,并直接与这些设备进行通讯——不需要通过互联网。该Framework具有这样的特点:很容易的创建多点(multipeer)会话、支持稳定、可靠和实时的数据传输。可以看出,通过该Framework,你的程序可以与附近的设备进行通讯,并做到数据的无缝交换。
  该Framework提供了两种方式来查找并管理网络服务:编程方式和基于UI选项。可以使用MCNearbyServiceBrowser类以编程的方式查找并管理设备。另外,我们可以将MCPeerPickerViewController集成到程序中——用来显示用户可以选择的设备列表。
  更多相关信息,请阅读:Multipeer Connectivity Framework Reference

新增的Framework
在iOS7中,新增了如下一些Framework:
  1.Game Controller framework (GameController.framework):提供了与游戏相关的硬件通讯接口。
2.Sprite Kit framework(SpriteKit.framework):提供了基于精灵(sprite-based)的动画和图形渲染。
3.Multipeer Connectivity framework(MultipeerConnectivity.framework):提供设备间点对点通讯的功能。
4.JavaScript Core framework (JavaScriptCore.framework):提供了用Objective-C封装的大量标准JavaScript对象。通过该framework可以对JavaScript代码进行评估(evaluate),以及解析JSON。
5.Media Accessibility framework (MediaAccessibility.framework):管理媒体文件中字幕(closed-caption)内容的显示。通过该Framework与settings的结合,可以让用户开启字幕的显示。
6.Safari Services framework (SafariServices.framework):通过该framework,可以通过编程的方式将URL添加到用户的Safari阅读列表中。

 http://www.cocoachina.com/ios/20130615/6414.html


Store Kit Framework

Store Kit framework(StoreKit.framework)已经迁移到新的订单系统(receipt system),这样一来,开发者可以在自己的设备上验证内购(in-app purchase)。同样也可以在服务器上进行程序购买订单的验证。更多关于新订单系统的使用,请阅读:Receipt Validation Programming Guide。

Security Framework
Security Framework(Security.framework)现在支持:通过iCloud,可以把密码在用户两台设备间进行同步。通过新的keychain属性((kSecAttrSyncronizable),程序可以为iCloud标记它们的keychain item。更多相关这个属性的内容,请看该framework的头文件。关于keychain更多信息,请看Keychain Services 

Pass Kit Framework
Pass Kit Framework(PassKit.ramework)新增了一些API——针对同时添加多个通行证(pass),通行证文件的格式也做了相应的调整:
 1.新的key指定通行证的截止日期 2.可以指定通行证只与特定的蓝牙信号相关 3.利用新的属性来控制通行证的显示。可以把通行证进行归类,并在通行证的背面显示自定义的文字内容,以及控制显示在通行证上的时间值 4.可以给通行证附带一些额外的数据信息,在程序中可以使用这些数据,不过并直接显示给用户 5.可以指定那些data detector用于通行证的字段中 更多关于如何在程序中使用Pass Kit的信息,请阅读Passbook Programming Guide。关于通行证文件的格式,请阅读Passbook Package Format Reference。

MessageUI Framework
在MessageUI framework中,MFMessageComposeViewController现在可以支持将附件添加到信息中。关于新接口内容,可以参看framework头文件。关于这个framework的类,请阅读Message UI Framework Reference

Media Player Framework
在Media Player framework中,MPVolumeView类可以判断用户选择的无线路由(wireless route,例如AirPlay和Bluetooth)是否可用。你也可以判断无线路由当前是否可用。关于新接口信息,请参看framework的头文件。关于Media Player framework涉及到的类,请参看Media Player Framework Reference。

Image I/O Framework
Image I/O Framework(ImageIO.framework)现在提供了获取和设置image metadata的接口。
更多相关接口信息,请看framework的头文件。关于framework类的介绍,请看Image I/O Reference Collection

iAd Framework
iAd framework(iAd.framework)做了如下修改——让广告更好的融入到程序中:
在MPMoviePlayerController类中的新方法可以让你在播放电影之前运行广告
framework对UIViewController进行了扩展,让其更容易创建广告内容。现在,你可以对view controller进行适当的配置——在实际内容显示之前先显示出广告内容。
关于新接口请看framework中的头文件。关于framework的介绍,请看Ad Support Framework Reference。

Foundation Framework
Foundation framework(Foundation.framework)主要做了如下改进:
 1.NSURLSession类是一个新增的类,主要用于程序在后台运行时,对网络资源的操作。这个类替换了NSURLConnection和相关delegate;同样也替换了NSURLDownload和相关delegate。2.NSURLComponents类也是一个新增类——用来解析URL的构建。这个类在解析URL的时候支持URI标准(rfc3986/STD66)。3.NSNetService和NSNetServiceBrowser用于在蓝牙和Wi-Fi中点对点的查找。4.NSURLCredential和NSURLCredentialStorage两个类可以用来创建同步策略的证书,并可以从iCloud中移除相关同步策略证书。5.NSURLCache、NSURLCredentialStorage和NSHTTPCookieStorage三个类支持存储请求的异步处理。6.NSCalendar类支持新的日历类型。更多关于新的接口,请看framework中 大头文件和Foundation release notes。关于该framework类的介绍,请看Foundation Framework Reference。

Core Telephony Framework
Core Telephony framework(CoreTelephony.framework)现在可以获取到设备使用的无线电信息:当前的信号强度、cell ID。由运营商开发的相关程序,同样可以通过预定运营商相关服务,来对他们的程序进行验证。更多相关信息请看Core Telephony Framework Reference。

Core Motion Framework
Core Motion framework(CoreMotion.framework)现在支持step counting(类似计步器)和运动的跟踪。关于step counting——framework通过检测用户的运动,然后根据运动信息计算出步数(貌似很牛叉的样子,不知道准确度如何了)。由于运动信息是由系统检测的,所以即使当程序没有运行的时候,系统也可以持续的收集step数据。通过这样的功能,framework也能区分出不同的运动类型,例如walking、running或者automobile——这对于导航类程序来说,就可以使用这些数据,直接修改用户的运动类型。更多相关信息,请看Core Motion Framework Reference。

Core Location Framework
Core Location framework(CoreLocation.framework)可以通过蓝牙设备来测距。通过测距可以确定附近蓝牙设备的范围,并作出相应的反应。例如,在博物馆的画廊里面,可能有一些蓝牙信号,供参观者通过相关程序显示出画廊的入口和出口。framework还支持推迟位置的更新的通知,直到特定的时间或者用户移动距离超过了最小值。更多相关信息,请看Core Location Framework Reference。

Core Foundation Framework
Core Foundation framework(CoreFoundation.framework)现在支持在派送队列(dispatch queues)中进行流对象的调度。更多相关信息,请看Core Foundation Framework Reference。

 Core Bluetooth Framework

Core Bluetooth framework(CoreBluetooth.framework)做了如下改进:

1.该framework现在可以把CBCentral和CBPeripheral对象的状态信息进行保存,并且在程序启动的时候还原——这个功能可以支持相关蓝牙设备的长期行为。2.CBCentral和CBPeripheral类现在使用NSUUID对象来存储唯一标示。3.现在可以从CBCentralManager中同步的获取一个CBPeripheral对象。更多相关信息,请看Core Bluetooth Framework Reference。

AV Foundation Framework
AV Foundation framework(AVFoundation.framework)做了如下改进:
 1.AVAudioSession支持一些新的行为:可以选择音频输入的首选项,包括来自内置麦克风的音频;支持多通道的输入和输出 2.AVVideoCompositing和相关的类支持自定义视频合成器(video compositor) 3.AVSpeechSynthesizer和相关的类提供了语音合成功能 4.capture类新增支持的功能有:查找camaera支持的格式、支持60fps录制、在录制和预览的时候,Video的放大(真实和数字化)、实时查找机器可读的条形码数据、自动对焦范围的限制、采集录制过程中访问时钟。另外还有很多信息,笔者就不在这里一一列出,读者可以查阅AV Foundation Framework Reference。

Accelerate Framework
Accelerate framework(Accelerate.framework)做了如下改进:

1.支持Core Graphics数据类型的操作 2.支持灰度图片:每个像素为1、2或4位 3.可以在不同图像格式之间进行转换 4.支持biguad(IIR)操作 更多相关信息请看Accelerate Framework Reference。

科技博客9to5Mac对另外一些API进行了分析
1.Text to speech API(文本转语音API)
过去,开发者必须自己实现文本的speech功能—这无疑非常的耗费开发时间和成本,并且让程序体积变得非常大。现在在iOS 7中,开发者只需要3行代码就能实现文本的speech功能,不仅可以在iOS app中做到,这一功能还可以轻松地在基于Safari的web app开发中实现。
 
2.Motion Effects (视差效应)
iOS 7的界面中值得注意的一点是Parallax Effect(视差效应),当倾斜或者移动屏幕的时候,你会发现Parallax Effect似乎会让屏幕上的对象产生3D视觉效果。
在WWDC 2013上,苹果通过主屏幕的icon展示了这一效果。另外,这个功能还出现在其他一些UI元素上,比如动态页面和Safari标签。
 
现在,第三方app开发者通过新的API-Motion Effects也可以使用这项功能了。设备通过加速器来检测运行和动作,从而控制Motion Effects。开发者还可以通过使用Core Animation在动画项目中实现这一功能。
 
3.Background Downloads(后台下载)
类似苹果之前iOS版本中的Newsstand应用后台下载,现在第三方应用可以在后台下载资源。此前,当应用转至后台时,内容的下载就会停止,而在iOS 7将从根本上改变这种状况。当设备连接上WiFi系统就会快速下载内容。不过,当app处于前台时下载速度要快于app处于后台的情况,另外网络连接状态不佳也会影响到app的内容下载速度。
 
4.Free Hosted in-App purchases(免费托管IAP)
不管是用户还是开发者都会因Store Kit新的API感激苹果,这个API将允许开发者为用户提供了免费的应用内下载,并且苹果将会按照内容的托管和分发来负责其中的每件事。不用在开发者自己的服务器上运行。托管的IAP将在后台进行下载,每个应用内购买限制在2GB以内。开发者向用户提供可选内容的同时也能降低最初的下载量。
 
在iOS 7中,跟IAP相关的可疑活动将可以通过更简单的方式报告给苹果。如果发现了不正常的购买,开发者可以快速简单地让苹果知道是否多个设备使用了同一个账户进行购买。

5.Maps(地图)
苹果在iOS 7的Map Kit中进行了不少提升和改进。最引人注目的新API是对3D地图的使用。跟iOS 7地图应用一样,开发者现在可以在地图中查看3D建筑物,可以在3D地图模式中通过双指手势来旋转和倾斜地图。
 
新的MKMapCamera API也将允许开发者在3D地图中调整摄像头的位置,来创建电影镜头的转场或过渡效果。开发者可以在iOS 模拟器中测试旋转和倾斜的运动。Map Kit另一个开放给开发者的新功能是Directions,允许应用把苹果地图的驾驶和行走方向指示,与其他替代路线和时间预估整合在一起。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值