内 容 简 介
iOS系统从诞生之日起到现在,在短短几年的时间内,凭借其硬件产品iPhone和iPad的良好用户体验,赢得了广大消费者用户和开发者用户的追捧。
本书从搭建iOS开发环境的入门知识讲起,依次讲解了Objective-C语言基础、Swift语言基础、Cocoa Touch框架、Storyboarding(故事板)、基本控件的应用、视图处理、界面控制器的处理、实现多场景和弹出框、屏幕旋转处理、声音服务、定位处理、与互联网接轨、与硬件之间的操作、开发通用的项目程序、游戏开发、读写应用程序数据、HealthKit开发详解、HomeKit开发详解、WatchKit开发详解、多功能音乐盒系统。
本书内容全面,几乎涵盖了iOS 8应用开发所需要的全部内容。全书内容言简意赅,讲解细致,特别适合初学者学习和消化,并可从清华大学出版社的网站下载书中的源代码。
本书适合iOS初学者、iOS爱好者、iPhone开发人员、iPad开发人员学习,也可以作为相关培训学校和大专院校相关专业的教学用书。
前 言
2014年6月3日,苹果公司在WWDC 2014开发者大会上正式发布了全新的iOS 8操作系统。该系统采用了一套全新的配色方案,整个界面有很明显的半透明果冻色,对拨号、天气、日历、短信等几乎所有应用的交互界面都重新进行了设计,整体看来更加动感、时尚。为了帮助读者快速掌握iOS 8应用开发的核心技术知识,作者在第一时间写作了本书。
iOS的成长历程
2007年1月9日,iOS最早在苹果Macworld展览会上公布,随后,于同年的6月,发布了第一版iOS操作系统。
2007年10月17日,苹果公司发布了第一个本地化iPhone应用程序开发包(SDK)。
2008年3月6日,苹果公司发布了第一个测试版开发包,并且将iPhone runs OS X改名为iPhone OS。
2008年9月,苹果公司将iPod touch的系统也换成了iPhone OS。
2010年2月27日,苹果公司发布iPad,iPad同样搭载了iPhone OS。
2010年6月,苹果公司将iPhone OS改名为iOS,同时获得了思科iOS的名称授权。
2010年第四季度,苹果公司的iOS占据了全球智能手机操作系统26%的市场份额。
2011年10月4日,苹果公司宣布iOS平台的应用程序已经突破50万个。
2012年2月,应用总量达到552,247个,其中,游戏应用最多,达到95,324个,占据17.26%;书籍类应用以60,604个排在第二,占据10.97%;娱乐应用排在第三,总量为56,998个,占据10.32%。
2012年6月,苹果公司在WWDC 2012开发者大会上推出了全新的iOS 6,提供了超过200项新的功能。
2013年6月10日,苹果公司在WWDC 2013开发者大会上发布了iOS 7,几乎重绘了所有的系统APP,去掉了所有的仿实物化,整体设计风格转为扁平化设计。
2013年9月10日,苹果公司在2013秋季新品发布会上正式提供iOS 7下载更新。
2014年6月3日,苹果公司在WWDC 2014开发者大会上发布了iOS 8操作系统。
2015年6月9日,苹果公司WWDC 2015开发者大会上公布的数据表明,iOS 8的安装率已经达到83%。
本书内容
本书共分21章,主要向读者讲解iOS开发入门、Objective-C语言基础、Swift语言基础、Cocoa Touch框架、Storyboarding(故事板)、基本控件的应用、视图处理、界面控制器的处理、实现多场景和弹出框、屏幕旋转处理、声音服务、定位处理、与互联网接轨、与硬件之间的操作、开发通用的项目程序、游戏开发、读写应用程序数据、HealthKit开发详解、HomeKit开发详解、WatchKit开发详解、多功能音乐盒系统,内容由浅入深,方便读者自学。
本书特色
本书内容丰富,实例覆盖全面。我们的目标是通过一本图书,提供多本图书的价值,读者可以根据自己的需要有选择地阅读。在内容的编写上,本书具有下列特色。
(1) 内容全面:本书可以称为“市面内容最全的一本iOS书”,无论是搭建开发环境,还是控件接口,还是网络、多媒体和动画,在本书中,都能找到解决问题的答案。
(2) Objective-C和Swift双语讲解:本书中的实例不仅使用Objective-C语言实现,而且使用了苹果公司新推出的Swift语言。这样,读者可以掌握使用Objective-C语言和Swift语言开发iOS程序的方法。
(3) 结构合理:从用户的实际需要出发,科学安排知识结构。全书详细地讲解与iOS开发有关的所有知识点,内容循序渐进,由浅入深。
(4) 实用性强:本书彻底摒弃枯燥的理论和简单的操作,注重实用性和可操作性,通过实例的实现过程,详细讲解各个知识点的基本知识。
(5) 提供工程源代码:本书相关章节所需的工程源代码文件可从清华大学出版社的网站下载。
读者对象
本书适合下列人员阅读和学习:
* 初学iOS编程的自学者
* 大中专院校的老师和学生
* 着手毕业设计的学生
* iOS编程爱好者
* 相关培训机构的老师和学员
* 从事iOS开发的程序员
由于作者水平有限,本书疏漏之处在所难免,恳请读者提出意见或建议,以便再版时修正,使之更臻完善。
编 者
目 录第1章 iOS开发入门 11.1 iOS系统介绍 21.1.1 iOS的发展历程 21.1.2 iOS 8是一个革命性的版本 21.2 加入iOS开发团队 41.3 搭建开发环境 61.3.1 Xcode介绍 71.3.2 iOS SDK介绍 81.3.3 下载并安装Xcode 101.4 创建第一个iOS 8项目 151.5 iOS的常用开发框架 181.5.1 Foundation框架简介 181.5.2 Cocoa框架简介 20第2章 Objective-C语言基础 212.1 Objective-C语言基础 222.1.1 TIOBE编程语言社区排行榜 222.1.2 Objective-C介绍 222.1.3 iOS选择Objective-C的原因 232.1.4 Objective-C的优点和缺点 232.2 第一段Objective-C程序 242.2.1 使用Xcode编辑代码 242.2.2 注释 272.2.3 #import指令 282.2.4 主函数 292.2.5 显示变量的值 312.3 数据类型和常量 322.3.1 int类型 332.3.2 float类型 342.3.3 double类型 352.3.4 char类型 362.3.5 字符常量 372.3.6 id类型 382.3.7 限定词 402.4 字符串 412.5 表达式 422.5.1 算数表达式 422.5.2 常量表达式 462.5.3 条件运算符 462.5.4 sizeof运算符 472.5.5 关系运算符 482.5.6 强制类型转换运算符 482.5.7 运算符的优先级 49第3章 Swift语言基础 513.1 Swift基础 523.1.1 Swift之父 523.1.2 Swift的优点 533.2 数据类型 543.2.1 int类型 543.2.2 float类型 543.2.3 double类型 553.2.4 char类型 553.2.5 字符常量 553.3 常量和变量 563.3.1 常量 563.3.2 变量 563.4 字符串和字符 573.4.1 字符串字面量 583.4.2 初始化空字符串 583.4.3 字符串可变性 593.4.4 值类型字符串 593.4.5 计算字符数量 603.4.6 连接字符串和字符 603.4.7 字符串插值 603.4.8 比较字符串 613.4.9 Unicode字符 623.5 流程控制 643.5.1 for循环 653.5.2 while循环 673.6 条件语句 683.6.1 if语句 683.6.2 switch语句 693.7 函数 703.7.1 函数的声明与调用 703.7.2 函数的参数和返回值 713.7.3 函数参数名 73第4章 Cocoa Touch框架 774.1 Cocoa Touch基础 784.1.1 Cocoa Touch概述 784.1.2 Cocoa Touch中的框架 784.2 iPhone的技术层 794.2.1 Cocoa Touch层 794.2.2 多媒体层 854.2.3 核心服务层 864.2.4 核心OS层 874.3 Cocoa Touch中的框架 874.3.1 Core Animation(图形处理)框架 884.3.2 Core Audio(音频处理)框架 884.3.3 Core Data(数据处理)框架 894.4 Cocoa中的类 904.4.1 核心类 904.4.2 数据类型类 934.4.3 UI界面类 974.5 国际化 1004.6 使用Xcode学习iOS框架 1014.6.1 使用Xcode文档 1014.6.2 快速帮助 103第5章 Storyboarding(故事板) 1055.1 故事板的推出背景 1065.2 故事板的文档大纲 1075.3 文档大纲的区域对象 1085.4 创建一个界面 1095.4.1 对象库 1095.4.2 将对象加入到视图中 1105.4.3 使用IB布局工具 1115.5 定制界面外观 1155.5.1 使用属性检查器 1155.5.2 设置辅助功能属性 1165.5.3 测试界面 1175.6 使用模板Single View Application 1185.6.1 创建项目 1185.6.2 规划变量和连接 1235.6.3 设计界面 1255.6.4 创建并连接输出口和操作 1275.6.5 实现应用程序逻辑 1295.6.6 生成应用程序 131第6章 基本控件的应用 1336.1 文本框控件 1346.1.1 文本框基础 1346.1.2 在屏幕中显示一个文本输入框 1346.1.3 使用Swift实现UITextField控件 1356.2 文本视图控件 1416.2.1 文本视图基础 1416.2.2 在屏幕中换行显示文本 1426.2.3 基于Swift使用UITextView控件 1436.3 标签(UILabel) 1456.3.1 标签(UILabel)的属性 1466.3.2 使用UILabel显示一段文本 1466.4 按钮控件 1506.4.1 按钮基础 1506.4.2 按下按钮后触发一个事件 1516.4.3 基于Swift在界面中实现按钮的交互 1526.5 滑块控件 1566.5.1 使用滑块控件的基本方法 1576.5.2 实现各种各样的滑块 1586.5.3 使用Swift实现UISlider控件效果 1666.6 图像视图控件(UIImageView) 1686.6.1 UIImageView的常用操作 1686.6.2 在屏幕中显示图像 1736.6.3 基于Swift使用UIImageView控件 1736.7 UISwitch控件 1766.7.1 开关控件基础 1766.7.2 改变UISwitch的文本和颜色 1766.7.3 基于Swift控制是否显示密码明文 1796.8 分段控件 1826.8.1 分段控件的属性和方法 1836.8.2 使用UISegmentedControl控件 1856.8.3 基于Swift使用UISegmentedControl控件 187第7章 视图处理 1917.1 可滚动的视图 1927.1.1 UIScrollView的基本用法 1927.1.2 使用可滚动视图控件 1947.1.3 基于Swift使用UIScrollView控件 1987.2 翻页视图处理 2007.2.1 PageControl控件基础 2007.2.2 基于Swift使用UIPageControl控件 2017.3 提醒视图(UIAlertView) 2077.3.1 UIAlertView基础 2077.3.2 实现一个自定义提醒对话框 2117.3.3 基于Swift使用UIAlertView控件 2147.4 选择器视图(UIPickerView) 2197.4.1 选择器视图基础 2207.4.2 实现两个UIPickerView控件间的数据依赖 2227.5 表视图基础 2267.5.1 表视图的外观 2267.5.2 表单元格 2277.5.3 添加表视图 2277.5.4 UITableView详解 2317.5.5 拆分表视图 2347.5.6 基于Swift在表视图中使用其他控件 2377.6 活动指示器(UIActivityIndicatorView) 2407.6.1 活动指示器基础 2407.6.2 实现一个播放器的活动指示器 2407.7 进度条(UIProgressView) 2437.7.1 进度条基础 2437.7.2 实现一个蓝色进度条效果 2437.7.3 使用Swift实现自定义进度条效果 244第8章 界面控制器的处理 2518.1 UIView基础 2528.1.1 UIView的结构 2528.1.2 视图架构 2548.1.3 视图层次和子视图的管理 2558.1.4 视图绘制周期 2568.1.5 设置UIView的位置和尺寸 2568.2 导航控制器(UIViewController)简介 2588.2.1 UIViewController基础 2588.2.2 实现不同界面之间的跳转处理 2588.2.3 基于Swift使用UIViewController控件 2608.3 使用UINavigationController 2658.3.1 导航栏、导航项和栏按钮项 2668.3.2 UINavigationController详解 2668.3.3 在故事板中使用导航控制器 2688.3.4 实现不同视图的切换 2708.4 选项卡栏控制器 2748.4.1 选项卡栏和选项卡栏项 2758.4.2 在选项卡栏控制器管理的场景之间共享数据 2778.4.3 UITabBarController使用详解 2778.4.4 实现不同场景的切换 2808.5 综合使用界面视图控件 284第9章 实现多场景和弹出框 2939.1 多场景故事板基础 2949.2 创建多场景项目 2959.2.1 在故事板中添加场景 2959.2.2 给场景命名 2979.2.3 添加提供支持的视图控制器子类 2979.2.4 使用#import和@class共享属性和方法 3009.3 使用第二个视图来编辑第一个视图中的信息 301第10章 屏幕旋转处理 30710.1 启用界面旋转 30810.2 设计可旋转和可调整大小的界面 30810.2.1 自动旋转和自动调整大小 30910.2.2 调整框架 30910.2.3 切换视图 30910.2.4 使用Interface Builder创建可旋转和调整大小的界面 30910.2.5 在旋转时调整控件方向 313第11章 声音服务 31911.1 访问声音服务 32011.1.1 声音服务基础 32011.1.2 播放声音文件 32111.2 提醒和震动 32611.2.1 播放提醒音 32611.2.2 使用iOS的提醒功能 32611.3 Media Player框架 33711.3.1 Media Player框架中的类 33711.3.2 使用Media Player播放视频 34111.4 AV Foundation框架 34411.4.1 准备工作 34411.4.2 使用AV音频播放器 34411.4.3 使用AV录音机 34511.5 图像选择器(UIImagePickerController) 34611.5.1 使用图像选择器 34611.5.2 基于Swift语言实现ImagePicker功能 34711.6 基于Swift实现一个音乐播放器 360第12章 定位处理 37112.1 Core Location框架 37212.1.1 Core Location基础 37212.1.2 使用流程 37212.2 获取位置 37512.2.1 位置管理器委托 37512.2.2 处理定位错误 37612.2.3 位置精度和更新过滤器 37712.2.4 获取航向 37812.3 地图功能 37912.3.1 Map Kit基础 37912.3.2 为地图添加标注 38012.4 在屏幕中实现一个定位系统 38112.4.1 设计界面 38212.4.2 具体编码 38312.5 使用谷歌地图 38612.5.1 添加打开地图功能 38712.5.2 升级视图控制器 38912.5.3 添加自定义地图标注对象 391第13章 与互联网接轨 39313.1 UIWebView控件 39413.1.1 UIWebView基础 39413.1.2 显示指定的网页 39413.1.3 控制屏幕中的网页 39613.1.4 加载显示PDF、Word和JPEG图片 39813.1.5 在网页中加载HTML代码 40013.1.6 触摸网页数据 40113.2 实现一个简单的网页浏览器 40513.3 基于Swift使用UIWebView控件 409第14章 与硬件之间的操作 41514.1 加速计和陀螺仪 41614.1.1 加速计基础 41614.1.2 陀螺仪 42114.1.3 检测倾斜和旋转 42114.2 访问朝向和运动数据 42714.2.1 两种方法 42714.2.2 检测朝向演练 42914.3 基于Swift使用Motion传感器 432第15章 开发通用的项目程序 43515.1 开发通用的应用程序 43615.1.1 在iOS 6中开发通用的应用程序 43615.1.2 在iOS 7、iOS 8中开发通用应用程序 43715.1.3 图标文件 44715.1.4 启动图像 44815.2 使用模板创建通用的应用程序 44815.2.1 创建项目 44815.2.2 设计界面 44915.2.3 创建并连接输出口 45015.2.4 实现应用程序逻辑 45015.3 使用视图控制器 45115.3.1 创建项目 45215.3.2 设计界面 45315.3.3 创建并连接输出口 45315.3.4 实现应用程序逻辑 45415.3.5 生成应用程序 45415.4 使用多个目标 45515.4.1 将iPhone目标转换为iPad目标 45515.4.2 将iPad目标转换为iPhone目标 456第16章 游戏开发 45716.1 Sprite Kit框架基础 45816.1.1 Sprite Kit的优点和缺点 45816.1.2 Sprite Kit、Cocos2D、Cocos2D-X和Unity的选择 45816.1.3 开发一个Sprite Kit游戏程序 45816.2 基于Swift开发一个四子棋游戏 470第17章 读写应用程序的数据 48117.1 iOS应用程序和数据存储 48217.2 用户默认设置 48217.3 设置束 48417.4 iCloud存储 48517.5 使用SQLite 3存储和读取数据 48617.6 核心数据 49117.6.1 Core Data基础 49117.6.2 Core Data的基本架构 49317.6.3 托管对象和托管对象模型 49617.6.4 在iOS中使用Core Data 49717.7 互联网数据 50117.7.1 XML和JSON 50217.7.2 使用JSON获取网站中的照片信息 505第18章 HealthKit开发详解 50918.1 HealthKit基础 51018.1.1 HealthKit介绍 51018.1.2 市面中的HealthKit应用现状 51018.1.3 接入HealthKit的好处 51118.2 HealthKit开发基础 51218.2.1 开发要求 51218.2.2 HealthKit开发思路 51218.3 实战演练——检测一天消耗掉的能量 513第19章 HomeKit开发详解 52919.1 HomeKit基础 53019.1.1 HomeKit对格局的作用 53019.1.2 市场策略和发展机遇 53119.1.3 HomeKit硬件标准 53119.2 HomeKit开发基础 53219.2.1 HomeKit应用程序的层次模型 53219.2.2 HomeKit程序架构模式 53319.2.3 HomeKit中的类 53519.3 实战演练——实现一个HomeKit控制程序 536第20章 WatchKit开发详解 55520.1 Apple Watch介绍 55620.2 WatchKit开发基础 55720.2.1 搭建WatchKit开发环境 55820.2.2 WatchKit架构 56120.2.3 WatchKit布局 56320.2.4 Glances和Notifications 56320.2.5 Watch App的生命周期 56420.3 开发Apple Watch应用程序 56520.3.1 创建Watch应用 56620.3.2 创建Glance界面 56620.3.3 自定义通知界面 56720.3.4 配置Xcode项目 56720.4 实战演练——实现AppleWatch界面布局 57020.5 实战演练——显示地图、网页和单元格 574第21章 多功能音乐盒系统 57721.1 系统介绍 57821.1.1 功能介绍 57821.1.2 模块划分 57821.2 系统主界面 57921.3 音乐库 58121.3.1 音乐库主界面 58221.3.2 歌曲表视图控制器 58421.3.3 开关控制器 58921.3.4 专辑模块 59221.3.5 歌曲信息模块 59721.3.6 正在播放模块 59921.4 在线搜索 60421.5 MV播放 61421.5.1 主界面 61421.5.2 视图刷新 62121.5.3 MV信息 62221.5.4 MV搜索 62321.5.5 Hot MV 624