iOS 7 新特性
iOS7更新了很多引人注目的功能。用户界面完全重新设计了。iOS7为开发2D,2.5D游戏引入了全新的动画系统。加强多线程,点对点连接,以及许多其他重要的功能让iOS7成为有史以来最有意义的一次发布。
这边文章总结了iOS7开发相关的特性。这个版本大操作系统可以再目前的iOS设备上运行。另外,关于关键的新技术,这篇文章也列出了详细介绍这些特性的文章。
用户界面的改变
iOS7包含了很多新特性来帮助大家创建友好的用户界面
UI设计
iOS7用户界面完全重新设计了。纵观整个系统,不仅注重了功能,也注重了用户内容的设计。半透明,精致的视觉触动,流动,逼真的运动感应,层次感,和灵活的用户体验。不管你是创建一个新的APP或者更新现有的,设计的时候记住这些特性。
用iOS7SDK编译的APP在iOS7上运行时都会自动展现新的界面。如果在界面中使用了自动适应尺寸和位置,这些界面也会自动布局。不过也许仍然会有增加的工作需要做来让界面按照预期的展现。同样的,如果自定义了界面,也需要更新来更好的适应新的界面。
关于和使用iOS7的优势来设计APP,查看介绍iOS7 Design Resources.
界面的动态行为
App现在可以为UIView对象以及那些实现了UIDynamicItem协议的对象指定动态行为。(实现了这个协议的对象被叫做dynamic items.)动态行为提供了一个优化APP用户体验的方式,就好像真是世界的行为和特性(比如重力)一样的动画。UIKit支持下面的动态行为:
- UIAttachmentBehavior对象指定了两个动态对象之间的联系或者一个对象和一个点之间。当一个对象(或点)移动时,相关的对象也会移动。这个连接不完全是静态的。这个行为也有阻尼震荡属性来决定时间相关的行为。
- UICollisionBehavior对象可以让两个动态对象按照他们指定的边界实现碰撞行为。这个属性也可以让对象对碰撞做出相应的反应。
- UIGravityBehavior为动态对象指定一个重力矢量。动态对象会向重力矢量方向加速直到他们其他对象碰撞或者到边界。
- UIPushBehavior对象为一个动态对象指定一个持续这瞬间的推力
- UISnapBehavior为一个对象设置一个捕捉的点。对象被一个设置好的力拉向指定的点。就好像被用一个弹簧拴在那个点上。
动态行为在被加到一个animator对象时就生效了,animator对象是UIDynamicAnimator类的实例。animator为动态行为提供了上下文。一个动态对象可以有多个动态行为,但是这所有的动态行为必须在同一个animator对象中做动画。
想了解更多可以实现的东西的话,查看UIKit Framework Reference.
Text Kit
Text Kit是一个管理字符串和排版的工具集合。Text Kit可以在段落,列,以及页上排版有样式的字符串。它可以容易的在文字周围添加图片。也可以使用多种字体。Text kit也可以和UIKit文字相关的控件交互,这样可以让APP更容易的创建,编辑,显示,存储字符串。并且使用更少的代码。
Text Kit包含了基于已有的类的新的类以及一些扩展,包括:
- NSAttributedString类支持一些新的属性
- NSLayoutManager类生成字形以及布局文字
- NSTextContainer类定义一个文字布局的区域
- NSTextStorage类定义了一个基本的界面来管理文字内容
更新关于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.更多信息,查看框架的头文件。
以及增强了一些现有的框架
iOS 7 新特性的更多相关文章
- iOS 9应用开发教程之iOS 9新特性
iOS 9应用开发教程之iOS 9新特性 iOS 9开发概述 iOS 9是目前苹果公司用于苹果手机和苹果平板电脑的最新的操作系统.该操作系统于2015年6月8号(美国时间)被发布.本章将主要讲解iOS ...
- iOS开发——新特性OC篇&Swift 2.0新特性
Swift 2.0新特性 转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度 ...
- iOS开发——新特性OC篇&IOS9 系统新特性
IOS9 系统新特性 2015年6月89号凌晨召开的WWDC 2015苹果开发者大会发布了全新的iOS 9系统,PC6小编今天给大家整理了这次iOS9的系统更新带来了哪些新的功能与升级,本次新功能一览 ...
- iOS开发——新特性OC篇&IOS9 SDK新特性
iOS9 SDK新特性 WWDC 2015苹果开发者大会是移动开发者一年一度的盛会,InfoQ中文站除了第一时间整理Keynote内容分享给大家之外,还邀请了资深的一线开发者分享他们的收获.本文为王巍 ...
- iOS开发——新特性OC篇&Objective新特性
Objective新特性 Overview 自 WWDC 2015 推出和开源 Swift 2.0 后,大家对 Swift 的热情又一次高涨起来,在羡慕创业公司的朋友们大谈 Swift 新特性的同时, ...
- iOS 8 新特性
这篇文章会介绍iOS8开发相关的主要特性. App 插件 通过支持插件,iOS8让我们可以系统指定的区域进行扩展,也就是为用户的特定需求提供自定义的方法.例如:可以通过App插件帮助用户分享他们的内容 ...
- iOS 9 新特性
这篇文章介绍了iOS9开发相关的简介,现在发布的设备都会搭载iOS9.这篇文章也列出了详细描述新特性的文章. iPad多线程增强 iOS9使用Slider Over, Split View, Pict ...
- iOS -- iOS11新特性,如何适配iOS11
前言 这几天抽空把WWDC的Session看了一些,总结了一些iOS11新的特性,可能对我们的App有影响,需要我们进行适配.本文作为一个总结. 本文内容包括:集成了搜索的大标题栏.横向选项卡栏.Ma ...
- iOS开发——新特性篇&swift新特性(__nullable和__nonnull)
swift新特性(__nullable和__nonnull) 最近在看老师写代码的时候经常遇到两个陌生的关键字,但是当我在我的电脑上敲得时候就是敲不出,后来才知道这是为了swift与OC混编的时候产生 ...
随机推荐
- android之listView定位到指定行同一时候隐藏输入键盘
帮别人该bug遇到的一个问题,记录下来. listView.setSelection(a); 这种方法能够让让你的listview定位到指定行 可是假设紧接着运行隐藏输入键盘的代码.则会有bug.这个 ...
- hdu 5071 Chat(模拟)
题目链接:hdu 5071 Chat 题目大意:模拟题. .. 注意最后说bye的时候仅仅要和讲过话的妹子说再见. 解题思路:用一个map记录每一个等级的妹子讲过多少话以及是否有这个等级的妹子.数组A ...
- hdu1507--二分图最大匹配
题意:你大爷.哦不! 你大叔继承了一块地什么的都是废话..,这里说说题意,和怎么建图. 题意:这里有一块N*M的地,可是有 K 个地方.是池塘,然后输入K行(x,y),OK,如今能够出售的地必须是 1 ...
- 一个简单而经典的RTX51 Tiny应用实例
关于RTX51 Tiny嵌入式实时操作系统的描写叙述请參考本人的上一篇博文(RTX51 Tiny实时操作系统学习笔记-初识RTX51 Tiny). 本篇博文.我将通过一个实例代码,带大家深入了解一下R ...
- Windows Phone开发(48):不可或缺的本地数据库
原文:Windows Phone开发(48):不可或缺的本地数据库 也许WP7的时候,是想着让云服务露两手,故似乎并不支持本地数据库,所有数据都上传上"云"数据库中.不过呢,在SD ...
- HDU2647-Reward(拓扑排序)
Reward Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- 採用Android中的httpclient框架发送post请求
/** * 採用httpclientPost请求的方式 * * @param username * @param password * @return null表示求得的路径有问题,text返回请求得 ...
- 基于 Android 的 3D 视频示例代码
笔者:Mark Liu 下载样本代码 简单介绍 在Android 中,创建一个可以播放视频剪辑的应用很easy:创建一个採用 3D 图形平面的游戏应用也很easy.可是,创建一个可以在 3D 图形对象 ...
- 泛泰A860 Andorid4.4.3 KTU84M (Omni) 图赏
Omni4.4.3 For Pantech A860L/K/S watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3lob3N0/font/5a6L5L2T/ ...
- Div 滚动栏滚动到指定的位置
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...