本节书摘来自异步社区《iOS 9应用开发入门经典(第7版)》一书中的第1章,第1.1节欢迎进入iOS平台,作者 【美】约翰 雷(John Ray),更多章节内容可以访问云栖社区“异步社区”公众号查看
第1章 为开发准备好系统和iOS设备
iOS 9应用开发入门经典(第7版)
本章将介绍:
您面临的iOS硬件局限性;
到哪里获取iOS开发工具;
如何加入iOS开发人员计划(Developer Program);
创建并使用供应配置文件(provisioning profile);
iOS开发技术概述。
iOS设备向开发人员展示了一个全新的世界——多点触摸界面、可始终在线、视频以及众多内置的传感器,这些传感器可用于创建从游戏到提高生产率的应用程序等各种软件。信不信由您,作为新开发人员,您有一个优势:您是白纸一张,不受以前知道的移动应用程序概念的羁绊。您的高见很可能变成Apple App Store的优秀作品。
本章将让您为开发第一个项目做好准备。您即将踏上成为iOS开发人员的道路,但在开始编码前还需要做些准备工作。
1.1 欢迎进入iOS平台
您阅读本书说明您可能有iOS设备,这意味着您知道如何使用其界面:清晰的图形、响应迅速、多点触摸和数以十万计的应用程序,这只是冰山一角。然而,作为开发人员,您需要习惯应对一个迫使您以不同方式思考的平台。
1.1.1 iOS设备
当前,iOS平台家族成员包括iPhone、iPad和iPod Touch。Apple Watch(watchOS)和Apple TV(tvOS)是类似的平台,但使用不同的用户界面,要求使用不同的开发方法。在阅读本书时您将发现,很多屏幕截图都基于以iPhone(具体地说是4.7英寸的屏幕)为中心的项目,这并非是我不喜欢大设备,而是因为iPad和iPhone Plus界面很大,难以在屏幕截图中显示。好消息是,如果您要开发针对iPad的项目,这样去做就是了!同样,如果您要开发针对iPhone 6s+的项目,去做好了。为这两种设备进行开发时,编码过程几乎相同。对于不同的情况,我将确保您明白设备之间的差别(及其原因),但这样的情况很少。您还将发现,每个示例都提供了iPhone版本和iPad版本,这些代码可从本书的配套网站(http://teachyourselfios.com )下载。因此,不管您使用哪种设备,按本书介绍的做都将创建适用于该设备的应用程序。
注意:
与Apple开发工具和文档一样,本书不区分iPhone和iPod Touch。几乎在所有情况下,为这些设备开发的方式都相同,虽然有些功能在较早的iPod Touch版本上没有,但较早的iPhone和iPad版本亦如此。
1.1.2 显示屏和图形
iOS设备的分辨率各不相同,但iOS提供了一种考虑分辨率的简单方式。例如,在iPhone 5和iPhone 6之前,iPhone的屏幕大小为320 × 480点。请注意,这里说的是“点”而不是像素。iPhone 4采用了Retina屏幕,在此之前,iPhone的屏幕分辨率为320 × 480像素;现在,iOS设备的实际分辨率为上述分辨率与缩放因子的乘积。这意味着虽然在小设备(如iPhone 4s)上对元素进行定位时,使用的是数字320 × 480,但像素数可能更多。例如,iPhone 4(s)、5(s)和6的缩放因子为2,这意味着iPhone 4s的实际分辨率为(320 × 2)×(480 × 2),即640 × 960像素。iPhone 5稍有不同,其屏幕更大,为320 × 568点,即640 × 1136像素;而iPhone 6的屏幕375 × 667点,即750 × 1334像素,如图1.1所示。
那么庞大的iPhone 6+/6s+呢?它更与众不同——缩放因子为3,这意味着屏幕上的每个点都表示9个像素。以点为单位时,屏幕尺寸是多少呢?414 × 736点。在缩放因子为3的情况下,这相当于1242 × 2208像素,对吧?不完全对。iPhone Plus的分辨率为1080 × 1920,但“内部”分辨率为1242 × 2208。实际上,您可以这么认为:内部分辨率更高,但自动缩小内容,以适合1080 × 1920的屏幕。
像素如此之多,屏幕空间好像很大(即便是iPhone 5亦如此),但别忘了,所有这些像素都将显示在对角线只比无名指长一两英寸的屏幕上。
iPad系列产品的情况类似。iPad 2和第一代iPad mini的屏幕分辨率为768 × 1024点,但其缩放因子为1。采用Retina屏幕的iPad Air和iPad Mini的屏幕分辨率仍为768 × 1024点,但缩放因子为2,因此以像素为单位时,分辨率为1536 × 2048。iPad Pro配置了1024×1366点的超大屏幕,其缩放因子为2,因此以像素为单位时,分辨率为2048×2732。
本书后面介绍如何将对象放置到屏幕上时,将更详细地介绍缩放因子的工作原理。您需要知道的要点是,当您创建应用程序时,iOS将考虑缩放因子,以最大可能的分辨率显示应用程序及其界面,而您几乎无需为此做任何工作。
屏幕方面的限制并非坏事。正如您将学到的,使用iOS开发工具可创建层次与桌面软件一样多的应用程序,但其界面设计的结构化程度和效率更高。
您可在屏幕上显示复杂的2D和3D动画,这要归功于所有iOS设备都支持OpenGL ES和Metal。OpenGL是一个定义和操纵图像的行业标准,广泛用于游戏的创建;而Metal是Apple的一个应用程序编程接口(API),用于以极低的开销访问3D硬件。每次升级iOS设备时,都采用了更高级的3D芯片和渲染功能,从而改善了这些功能,但即使是最初的iPhone也有相当不错的图像处理功能。
![947432b776704483ad20bfe07f181f89597a396a](https://i-blog.csdnimg.cn/blog_migrate/3d88078fae727449b4f291219ff29d2c.png)
图1.1 iPhone 6s屏幕大小以点为单位,在纵向模式下为375×667,在横向模式下为667×375,但每个点由4个像素组成(水平和垂直方向上各两个)
需要考虑不同的屏幕尺寸吗?
iPhone 4引入了Retina屏幕,但处理起来非常简单。开发人员无需编写额外的代码,就可在应用程序中添加用于Retina屏幕的资源,这些资源将在需要时自动加载。之所以可以这样,是因为虽然分辨率变了,但长宽比没变——屏幕的水平和垂直点数都与以前相同。
iPhone 5有了新变化,其屏幕更长,这意味着iPhone的屏幕点数首次发生了变化,从320 × 480变成了320 × 568。然而,Apple更新了界面工具,让界面能够平滑地缩放,以适应不同的屏幕尺寸。
时间如梭,Apple于2013年推出了采用全新用户界面(UI)的iOS 7。突然之间,应用程序必须考虑完全不同的外观——控件和字体大小都与以前不同。
2014年,Apple推出了一系列尺寸不同于iPhone 5和5s的iOS设备。2015年,iPad具备了动态调整应用程序尺寸的功能,能够并排地运行应用程序。
好在Apple在增大设备尺寸的同时,也在不断开发让应用程序能够适应不同屏幕尺寸和布局的工具。
本书后面将介绍这些自适应工具——自动布局系统。通过结合使用自动布局系统和尺寸类(size class),可创建能够适应任何屏幕尺寸的应用。
1.1.3 应用程序资源约束
与台式机和笔记本电脑的高清晰度显示器一样,我们也越来越习惯于处理器的速度比单击速度快。iOS设备装备的处理器各不相同,从早期iPhone采用的400 MHz ARM到当前销售的顶级iPad和iPhone设备采用的多核A9。A系列芯片是一个集成在芯片中的系统(system on a chip),给设备提供了中央处理单元(CPU)、图形处理单元(GPU)和其他功能;这是Apple设计的第一个CPU系列,在随后的很长一段时间内都将使用它们。
为确保iOS设备能迅速响应,Apple做出了巨大努力,限制了设备的多任务功能。从iOS 4开始,Apple创建了一组多任务应用程序编程接口(API),供特定情况下使用。在较新的iOS版本中,放松了对这些API的限制,但如果iOS认为应用会耗费大量资源,就不会允许它继续执行。iOS将用户体验凌驾于其他一切之上。
不能忘记的另一个约束是可用内存。在最初的iPhone中,整个系统(包括您的应用程序)可用的内存只有128MB,而且没有虚拟内存的概念(将速度更慢的存储空间用作内存),因此您必须小心管理应用程序创建的对象。在最新的iPhone中,Apple提供了2GB内存,而iPad Pro配置了4GB内存。但别忘了,用户无法对早期的iPhone进行内存升级。
1.1.4 连接性
iPhone和iPad能够通过移动电话提供商(如美国的AT&T、Verizon和Sprint)始终连接到Internet。内置的WiFi和蓝牙对这种广域网接入进行了补充。在无线热点的覆盖范围内,WiFi可提供与台式机相当的浏览速度。另一方面,蓝牙现在可用于将各种外围设备(包括键盘)连接到iOS设备。
作为开发人员,您可利用Internet连接来更新应用程序的内容、显示网页以及创建多玩家游戏。唯一的缺点是,应用程序使用的3G、4G或LTE数据越多,愿意使用它的用户就越少,因为数据套餐的费用很高。有鉴于此,很多应用都只支持WiFi。请针对WiFi设计应用,并尽可能保守地使用无线数据。
1.1.5 输入和反馈
在输入和反馈机制及其易用性方面,iOS设备卓尔不群。您可从多点触摸屏幕(在iPad上,最多为11个手指)读取输入值、检查触摸压力(2015年推出的设备)、通过加速计和陀螺仪检测运动和倾斜、使用全球定位系统(GPS)进行定位、使用数字指南针确定面对的是哪个方向,以及使用距离(proximity)传感器和光传感器确定用户当前正如何使用设备。iOS可向应用程序提供很多有关用户当前在什么地方及其如何使用设备的信息,这使其变成了一个万能控制器,就像Nintendo Wii U和PlayStation DualShock 4一样,但功能超越了它们。
iOS设备还支持直接在应用程序中拍摄照片和视频,这打开了与现实世界交互的大门。当前市面上就有应用程序能够识别拍摄的物体并在线查找有关这些物体的参考资料(Amazon Mobile app)或实时地翻译印刷文件(Word Lens)。
最后,对于用户与应用程序交互时执行的每项操作,您都可提供反馈。这可以是在屏幕上能够看到的反馈,也可以是高品质音频以及通过震动(仅iPhone)带来的触觉反馈。作为开发人员,您将在本书中学习如何使用所有这些功能。
有关iOS平台的走马观花之旅到这里就结束了。从来没有哪种设备为开发人员定义并提供了如此多的功能,只要仔细考虑资源限制并相应地进行规划,将有大量的开发机会等着您。