《iOS 8应用开发入门经典(第6版)》——第1章,第1.1节欢迎进入iOS平台

简介:

本节书摘来自异步社区《iOS 8应用开发入门经典(第6版)》一书中的第1章,第1.1节欢迎进入iOS平台,作者 【美】John Ray(约翰 雷),更多章节内容可以访问云栖社区“异步社区”公众号查看

1.1 欢迎进入iOS平台
iOS 8应用开发入门经典(第6版)
您阅读本书说明您可能有iOS设备,这意味着您知道如何使用其界面:清晰的图形、响应迅速、多点触摸和数以十万计的应用程序,这只是冰山一角。然而,作为开发人员,您需要习惯应对一个迫使您以不同方式思考的平台。

1.1.1 iOS设备
当前,iOS平台家族成员包括iPhone、iPad、iPod Touch和Apple TV,但Apple TV还未对第三方开发开放。在阅读本书时您将发现,很多屏幕截图都基于以iPhone(具体地说是iPhone 6)为中心的项目,这并非是我不喜欢大设备,而是因为iPad和iPhone 6+界面很大,难以在屏幕截图中显示。好消息是,如果您要开发针对iPad的项目,这样去做就是了!如果您要开发针对iPhone 6+的项目,这样做好了。为这两种设备进行开发时,编码过程几乎相同。对于不同的情况,我将确保您明白设备之间的差别(及其原因),但这样的情况很少。您还将发现,每个示例都提供了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+呢?它更与众不同——缩放因子为3,这意味着屏幕上的每个点都表示9个像素。以点为单位时,屏幕尺寸是多少呢?414 × 736点。在缩放因子为3的情况下,这相当于1242 × 2208像素,对吧?不完全对。iPhone 6+的分辨率为1080 × 1920,但“内部”分辨率为1242 × 2208。实际上,您可以这么认为:内部分辨率更高,但自动缩小内容,以适合1080 × 1920的屏幕。

像素如此之多,屏幕空间好像很大(即便是iPhone 5亦如此),但别忘了,所有这些像素都将显示在对角线只比无名指长一两英寸的屏幕上。

iPad系列产品的情况类似。iPad 2和第一代iPad mini的屏幕分辨率为768 × 1024点,但其缩放因子为1。采用Retina屏幕的iPad的屏幕分辨率仍为768 × 1024点,但缩放因子为2,因此以像素为单位时,分辨率为1536 × 2048。

本书后面介绍如何将对象放置到屏幕上时,将更详细地介绍缩放因子的工作原理。您需要知道的要点是,当您创建应用程序时,iOS将考虑缩放因子,以最大可能的分辨率显示应用程序及其界面,而您几乎无需为此做任何工作。

屏幕方面的限制并非坏事。正如您将学到的,使用iOS开发工具可创建层次与桌面软件一样多的应用程序,但其界面设计的结构化程度和效率更高。

您可在屏幕上显示复杂的2D和3D动画,这要归功于所有iOS设备都支持OpenGL ES和Metal。OpenGL是一个定义和操纵图像的行业标准,被广泛用于游戏的创建;而Metal是Apple的一个应用程序编程接口(API),用于以极低的开销访问3D硬件。每次升级iOS设备时,都采用了更高级的3D芯片和渲染功能,从而改善了这些功能,但即使是最初的iPhone也有相当不错的图像处理功能。


3b700e956d6cb4cf9c1df4754e7279b6ad76f5f5

图1.1 iPhone 6屏幕大小以点为单位,在纵向模式下为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设备,再次印证了那句老话:唯一不变的就是变化。换句话说,我们必须考虑到这些设备比以前更宽、更高了。

好在Apple增大设备尺寸的同时,也在不断开发让应用程序能够适应不同屏幕尺寸和布局的工具。

本书后面将介绍这些自适应工具——自动布局系统。通过结合使用自动布局系统和尺寸类(size class),可创建能够适应任何屏幕尺寸的应用。

1.1.3 应用程序资源约束
与台式机和笔记本电脑的高清晰度显示器一样,我们也越来越习惯于处理器的速度比单击速度快。iOS设备装备的处理器各不相同,从早期iPhone采用的400 MHz ARM到当前销售的iPad和iPhone设备采用的多核A6、A7和A8。A系列芯片是一个集成在芯片中的系统(system on a chip),给设备提供了中央处理单元(CPU)、图形处理单元(GPU)和其他功能;这是Apple设计的第一个CPU系列,在随后的很长一段时间内都将使用它们。

为确保iOS设备能迅速响应,Apple做出了巨大努力,限制了设备的多任务功能。从iOS 4开始,Apple创建了一组多任务应用程序编程接口(API),供特定情况下使用。在较新的iOS版本中,放松了对这些API的限制,但如果iOS认为应用会耗费大量资源,就不会允许它继续执行。iOS将用户体验凌驾于其他一切之上。

不能忘记的另一个约束是可用内存。在最初的iPhone中,整个系统(包括您的应用程序)可用的内存只有128MB,而且没有虚拟内存的概念(将速度更慢的存储空间用作内存),因此您必须小心管理应用程序创建的对象。在最新的iPhone中,Apple提供了1GB内存。但别忘了,用户无法对早期的iPhone进行内存升级。

1.1.4 连接性
iPhone和iPad能够通过移动电话提供商(如美国的AT&T、Verizon和Sprint)始终连接到Internet。内置的WiFi和蓝牙对这种广域网接入进行了补充。在无线热点的覆盖范围内,WiFi可提供与台式机相当的浏览速度。另一方面,蓝牙现在可用于将各种外围设备(包括键盘)连接到iOS设备。

作为开发人员,您可利用Internet连接来更新应用程序的内容、显示网页以及创建多玩家游戏。唯一的缺点是,应用程序使用的3G或LTE数据越多,愿意使用它的用户就越少,因为数据套餐的费用很高。有鉴于此,很多应用都只支持WiFi。请针对WiFi设计应用,并尽可能保守地使用无线数据。

1.1.5 输入和反馈
在输入和反馈机制及其易用性方面iOS设备卓尔不群。您可从多点触摸屏幕(在iPad上,最多为11个手指)读取输入值、通过加速计和陀螺仪检测运动和倾斜、使用全球定位系统(GPS)进行定位、使用数字指南针确定面对的是哪个方向,以及使用距离(proximity)传感器和光传感器确定用户当前正如何使用设备。iOS可向应用程序提供很多有关用户当前在什么地方及其如何使用设备的信息,这使其变成了一个万能控制器,就像Nintendo Wii和PlayStation Move一样,但功能超越了它们。

iOS设备还支持直接在应用程序中拍摄照片和视频,这打开了与现实世界交互的大门。当前市面上就有应用程序能够识别拍摄的物体并在线查找有关这些物体的参考资料(Amazon Mobile app)或实时地翻译印刷文件(Word Lens)。

最后,对于用户与应用程序交互时执行的每项操作,您都可提供反馈。这可以是在屏幕上能够看到的反馈,也可以是高品质音频以及通过震动(仅iPhone)带来的力量反馈。作为开发人员,您将在本书中学习如何使用所有这些功能。

有关iOS平台的走马观花之旅到这里就结束了。从来没有哪种设备为开发人员定义并提供了如此多的功能,只要仔细考虑资源限制并相应地进行规划,将有大量的开发机会等着您。

相关文章
|
7天前
|
安全 Java Android开发
探索iOS与Android应用开发的异同
【6月更文挑战第6天】随着智能手机的普及,移动应用开发已成为技术行业的热点。本文将深入探讨iOS和Android两大主流平台在应用开发过程中的不同之处,包括开发环境、编程语言、用户界面设计、市场策略以及安全性等方面的差异,旨在为开发者提供全面的指导和参考。
14 6
|
30天前
|
存储 缓存 编解码
实现iOS平台的高效图片缓存策略
【4月更文挑战第23天】在移动应用开发领域,尤其是图像处理密集型的iOS应用中,高效的图片缓存策略对于提升用户体验和节省系统资源至关重要。本文将探讨一种针对iOS平台设计的图片缓存方案,该方案通过结合内存缓存与磁盘缓存的多层次结构,旨在优化图片加载性能并降低内存占用。我们将深入分析其设计理念、核心组件以及在实际场景中的应用效果,同时对比其他常见缓存技术的优势与局限。
|
1天前
|
安全 Android开发 iOS开发
探索Android与iOS开发平台的差异
【6月更文挑战第12天】在移动应用开发的广阔天地中,Android和iOS两大阵营各具特色,它们之间的差异不仅体现在技术层面,更影响着开发者的选择和用户的体验。本文将深入探讨这两大平台在开发环境、用户界面设计、市场策略及安全性方面的主要区别,为开发者提供一份实用的指南,帮助他们在这两个不同的世界中做出明智的决策。
8 3
|
2天前
|
安全 Java Android开发
探索Android与iOS应用开发的核心差异
【6月更文挑战第11天】在移动设备的世界中,Android和iOS两大操作系统各占半壁江山。本文将深入探讨这两个平台在应用开发上的主要区别,包括开发环境、编程语言、用户界面设计、市场策略和安全性等方面。通过比较分析,旨在为开发者提供一份清晰的指南,帮助他们根据项目需求和目标受众选择最合适的开发路径。
|
6天前
|
安全 Java Android开发
探索Android与iOS开发平台的差异与优势
【6月更文挑战第7天】在移动应用开发的广阔天地中,Android和iOS两大平台如同双子星般熠熠生辉。本文将深入探讨这两个系统在开发环境、用户界面设计、市场策略及安全性方面的不同之处,旨在为开发者提供一个清晰的指南,帮助他们根据项目需求和目标受众选择最合适的平台。
|
7天前
|
Java Android开发 Swift
探索安卓与iOS开发的差异:平台选择对项目成功的影响
在移动应用开发的浩瀚宇宙中,安卓和iOS这两大星系以其独特的引力影响着开发者的航向。本文将穿梭于这两个平台的开发环境、编程语言、用户界面设计、性能优化以及市场分布等方面,揭示它们之间的核心差异。我们将通过比较分析,为开发者提供决策时的参考坐标,帮助他们根据项目需求和目标受众选择合适的平台。加入我们,一起揭开安卓与iOS开发的神秘面纱,探索它们如何塑造移动应用的未来。
|
14天前
|
安全 Android开发 Swift
探索安卓与iOS应用开发的异同
【5月更文挑战第31天】在移动应用开发领域,安卓和iOS两大平台各具特色,引领着市场的潮流。本文将深入探讨这两个平台在开发环境、编程语言、用户界面设计、应用商店政策以及安全性等方面的主要差异,为开发者提供全面而深入的比较分析。
|
14天前
|
机器学习/深度学习 传感器 vr&ar
探索安卓与iOS平台下的虚拟现实技术发展
随着移动设备的普及和技术的不断进步,安卓和iOS平台上的虚拟现实(VR)技术发展迅速。本文将探讨安卓与iOS平台下虚拟现实技术的最新进展,包括技术特点、应用场景以及未来发展趋势。
23 0
|
14天前
|
机器学习/深度学习 人工智能 安全
探索Android与iOS平台的安全性:一场永无止境的较量
【5月更文挑战第31天】在数字时代,移动操作系统的安全性成为了全球用户关注的焦点。本文将深入探讨Android和iOS这两大主流平台的安全机制,分析它们的安全特性、面临的挑战以及未来的发展趋势。通过比较研究,我们将揭示这两个系统在保护用户数据和隐私方面的不同策略和成效。
|
18天前
|
开发工具 Android开发 iOS开发
探索安卓与iOS应用开发的差异性与挑战
本文通过比较分析,揭示了安卓与iOS在应用开发过程中的核心差异,并讨论了开发者在面对两大平台时可能遇到的技术挑战。文章不追求面面俱到的概述,而是聚焦于具体的技术细节和实际案例,旨在为读者提供深入且实用的洞见。