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混编的时候产生 ...
随机推荐
- Hdu 4734 【数位DP】.cpp
题意: 我们定义十进制数x的权值为f(x) = a(n)*2^(n-1)+a(n-1)*2(n-2)+...a(2)*2+a(1)*1,a(i)表示十进制数x中第i位的数字. 题目给出a,b,求出0~ ...
- SlidingMenu开源项目滑动界面的实现总结
先上图 须要准备的是先得在GitHub上下载ActionBarSherlock-master.zip,和SlidingMenu-master.zip这两个开源文件,然后解压这两个包,SlidingMe ...
- JAVA 读取图片储存至本地
需求:serlvet经过处理通过报表工具返回一张报表图(柱状图 折线图). 现在需要把这个图存储到本地 以便随时查看 // 构造URL URL url = new URL(endStr); // 打开 ...
- Mongodb数据备份恢复
Mongodb数据备份恢复 一.MongoDB数据库导入导出操作 1.导出数据库 twangback为备份的文件夹 命令: mongodump -h 127.0.0.1[服务器IP] -d advie ...
- My97 DatePicker
支持日期以及时分秒的选择, 国人开发, 还不错! 官网: http://www.my97.net/
- 用 Apache James 搭建邮件服务器来收发邮件实践(一)(转)
Apache James 简称 James, 是 Java Apache Mail Enterprise Server的缩写.James 是100%基于Java的电子邮件服务器.它是一种独立的邮件服务 ...
- zabbix 监控特定进程
因为一些server上跑着一些重要程序,须要对它们进行监控,公司用的是zabbix监控,之前都是在zabbix中加入自己定义脚本对特定程序进行监控,近期看了zabbix的官方文档,发现原来强大的zab ...
- 关于Hbase的cache配置
关于Hbase的cache配置 在hbase中的hfilecache中,0.96版本号中新添加了bucket cache, bucket cache通过把hbase.offheapcache.perc ...
- Windows Phone开发(12):认识一下独具个性的磁贴
原文:Windows Phone开发(12):认识一下独具个性的磁贴 对"磁贴"的理解是一点也不抽象的,为什么呢?只要你愿意启动WP系统,无论你是在模拟器中还是在真机中,是的,桌面 ...
- JNDI 什么
JNDI是 Java 命名与文件夹接口(Java Naming and Directory Interface).在J2EE规范中是重要的规范之中的一个,不少专家觉得,没有透彻理解JNDI的意义和作用 ...