精通iOS开发(第7版)

更多详情

内容简介: 《精通iOS开发(第7版)》是iOS应用开发基础教程,内容翔实,语言生动。作者结合大量实例,使用Swift和Objective-C两种语言循序渐进地讲解了适用于iPhone/iPad开发的基本流程。新版介绍强大的iOS 8操作系统,涵盖Xcode 6的新功能,书中所有案例全部重新编写。

目录: 第1章 欢迎来到iOS 和Swift 世界  1
1.1 关于本书  1
1.2 必备条件  1
1.2.1 选择开发者计划  2
1.2.2 必备知识  3
1.3 iOS应用程序的特点  4
1.3.1 只能运行一个应用  4
1.3.2 只能使用一个窗口  4
1.3.3 有限的访问权限  4
1.3.4 有限的响应时间  4
1.3.5 有限的屏幕尺寸  5
1.3.6 有限的系统资源  5
1.3.7 不支持垃圾回收  6
1.3.8 一些新功能  6
1.3.9 与众不同的交互方法  6
1.4 本书内容  6
1.5 新版增加内容  8
1.6 Swift和Xcode版本  8
1.7 准备好了吗  8
第2章 创建第一个项目  9
2.1 在Xcode中创建项目  9
2.1.1 Xcode项目窗口  12
2.1.2 深入了解项目  18
2.2 Interface Builder简介  19
2.2.1 文件格式  20
2.2.2 storyboard  21
2.2.3 资源库  22
2.2.4 在视图中添加标签  23
2.2.5 属性修改  27
2.3 画龙点睛——美化iPhone 应用程序  28
2.4 启动界面  30
2.5 小结  31
第3章 实现基本交互  32
3.1 MVC模式  32
3.2 创建项目  33
3.3 视图控制器  34
3.3.1 输出接口和操作方法  35
3.3.2 精简视图控制器代码  37
3.3.3 设计用户界面  38
3.3.4 运行应用  47
3.3.5 布局预览  52
3.3.6 添加字体类型  54
3.4 应用程序委托  55
3.5 小结  58
第4章 更丰富的用户界面  59
4.1 满是控件的屏幕  59
4.2 动态控件、静态控件和被动控件  61
4.3 创建应用程序  62
4.4 实现图像视图和文本框  62
4.4.1 添加图像视图  62
4.4.2 调整图像视图的大小  64
4.4.3 设置视图属性  65
4.4.4 添加文本框  67
4.4.5 添加约束  71
4.4.6 创建并关联输出接口  72
4.5 关闭键盘  74
4.5.1 按下Done按钮关闭键盘  74
4.5.2 触摸背景关闭键盘  75
4.5.3 添加滑动条和标签  76
4.5.4 添加更多约束  78
4.5.5 创建并关联操作方法和输出接口  78
4.5.6 实现操作方法  78
4.6 实现开关、按钮和分段控件  79
4.6.1 添加两个带标签的开关  80
4.6.2 为开关创建并关联输出接口和操作方法  81
4.6.3 实现开关的操作方法  81
4.7 美化按钮  83
4.7.1 可拉伸图像  83
4.7.2 控件状态  84
4.7.3 为按钮创建并关联输出接口和操作方法  84
4.8 实现分段控件的操作方法  85
4.9 实现操作表单和警告视图  85
4.9.1 显示操作表单  86
4.9.2 显示警告视图  88
4.10 小结  90
第5章 自动旋转和自动调整大小  91
5.1 自动旋转机制  91
5.1.1 点、像素和Retina 显示屏  92
5.1.2 控制旋转  92
5.2 选择视图支持的方向  93
5.2.1 应用级支持的方向  93
5.2.2 独立控制器的旋转支持  94
5.3 使用约束设计界面  95
5.3.1 覆盖默认的约束  98
5.3.2 与屏幕等宽的标签  99
5.4 创建自适应布局  101
5.4.1 创建Restructure应用程序  101
5.4.2 尺寸分类  105
5.4.3 尺寸分类和storyboard  106
5.4.4 创建iPhone横屏布局  108
5.4.5 创建iPad布局  112
5.5 小结  114
第6章 多视图应用  115
6.1 多视图应用的常见类型  115
6.2 多视图应用的体系结构  118
6.2.1 根控制器  119
6.2.2 内容视图剖析  119
6.3 构建View Switcher项目  120
6.3.1 重命名视图控制器  120
6.3.2 添加内容视图控制器  123
6.3.3 修改SwitchingViewController实现文件  123
6.3.4 创建拥有工具栏的视图  124
6.3.5 连接工具栏按钮和视图控制器  126
6.3.6 编写根视图控制器  127
6.3.7 实现内容视图  130
6.3.8 转场过程的动画效果  133
6.4 小结  135
第7章 分页栏与选取器  136
7.1 Pickers应用程序  136
7.2 委托和数据源  139
7.3 创建Pickers应用程序  139
7.3.1 创建视图控制器  140
7.3.2 创建分页栏控制器  140
7.3.3 首次运行  143
7.4 实现日期选取器  143
7.5 实现单滚轮选取器  146
7.5.1 构建视图  146
7.5.2 将控制器实现为数据源和委托  147
7.6 实现多滚轮选取器  150
7.6.1 声明输出接口和操作方法  150
7.6.2 构建视图  150
7.6.3 实现控制器  151
7.7 滚轮内容根据环境变化  153
7.8 使用自定义选取器创建一个简单游戏  159
7.8.1 编写控制器头文件  159
7.8.2 构建视图  159
7.8.3 实现控制器  160
7.8.4 最后的细节  163
7.9 小结  165
第8章 表视图简介  166
8.1 表视图基础  166
8.1.1 表视图和表视图单元  167
8.1.2 分组表和无格式表  167
8.2 实现一个简单表  168
8.2.1 设计视图  168
8.2.2 编写控制器  170
8.2.3 添加一个图像  174
8.2.4 表视图单元样式  175
8.2.5 设置缩进级别  177
8.2.6 处理行的选择  178
8.2.7 更改字体大小和行高  179
8.3 定制表视图单元  181
8.3.1 向表视图单元添加子视图  181
8.3.2 创建UITableViewCell子类  182
8.3.3 从nib文件加载UITableViewCell  186
8.4 分组分区和索引分区  190
8.4.1 构建视图  190
8.4.2 导入数据  191
8.4.3 实现控制器  191
8.4.4 添加索引  195
8.5 实现搜索栏  195
8.6 视图调试器  202
8.7 小结  204
第9章 导航控制器和表视图  205
9.1 导航控制器  205
9.1.1 栈的概念  205
9.1.2 控制器栈  206
9.2 简单的字体浏览器:Fonts  207
9.2.1 子控制器  207
9.2.2 Font应用的基础框架  209
9.3 创建根视图控制器  214
9.4 初始化storyboard  217
9.5 第一个子控制器:字体列表视图  218
9.5.1 设定字体列表的storyboard  219
9.5.2 对根视图控制器的转场进行设置  220
9.6 创建字体尺寸视图控制器  221
9.6.1 设计字体尺寸视图控制器的storyboard  223
9.6.2 对字体列表视图控制器的转场进行设置  223
9.7 创建字体信息视图控制器  223
9.7.1 设计字体信息视图控制器的storyboard  225
9.7.2 设置约束  226
9.7.3 调整字体列表视图控制器的转场  227
9.7.4 我的收藏字体  227
9.8 改善表视图  228
9.8.1 实现轻扫删除  228
9.8.2 实现拖动排序  230
9.9 小结  232
第10章 集合视图  233
10.1 创建DialogViewer项目  233
10.2 修补视图控制器类  234
10.3 自定义单元  234
10.4 配置视图控制器  237
10.5 内容单元  238
10.6 实现流式布局  239
10.7 分区标题视图  241
10.8 小结  242
第11章 分割视图和浮动窗口  243
11.1 创建分割视图项目  245
11.1.1 在storyboard中定义结构  247
11.1.2 使用代码定义功能  248
11.1.3 Master-Detail模板应用程序的工作原理  253
11.2 显示总统信息  255
11.3 创建浮动窗口  261
11.4 iPhone上的分割视图  266
11.4.1 iPhone 6 Plus上的分割视图  267
11.4.2 在所有iPhone上支持iPhone 6 Plus的行为  268
11.5 自定义分割视图  271
11.6 小结  273
第12章 应用设置和用户默认设置  274
12.1 设置捆绑包入门  274
12.2 应用:Bridge Control  275
12.2.1 创建项目  278
12.2.2 使用设置捆绑包  279
12.2.3 读取应用中的设置  291
12.2.4 在应用中修改默认设置  294
12.2.5 注册默认值  296
12.2.6 保证设置有效  297
12.3 切换到“设置”应用程序  299
12.4 小结  300
第13章 数据持久化基础知识  301
13.1 应用的沙盒  301
13.1.1 获取Documents目录  303
13.1.2 获取tmp目录  304
13.2 文件保存方案  304
13.2.1 单文件持久化  304
13.2.2 多文件持久化  304
13.3 属性列表  304
13.3.1 属性列表序列化  305
13.3.2 Persistence应用的第一个版本  306
13.4 对模型对象进行归档  310
13.4.1 遵循NSCoding协议  310
13.4.2 实现NSCopying协议  312
13.4.3 对数据对象进行归档和取消归档  313
13.4.4 归档应用  314
13.5 使用iOS内嵌的SQLite3  317
13.5.1 创建或打开数据库  317
13.5.2 绑定变量  319
13.5.3 SQLite3 应用  319
13.6 使用Core Data  324
13.6.1 实体和托管对象  326
13.6.2 Core Data应用  328
13.7 小结  335
第14章 文档和iCloud  336
14.1 使用UIDocument管理文档存储  336
14.1.1 构建TinyPix  336
14.1.2 创建TinyPixDocument类  337
14.1.3 主控制器代码  340
14.1.4 初始storyboard  346
14.1.5 创建TinyPixView类  348
14.1.6 设计storyboard  352
14.2 添加iCloud支持  356
14.2.1 创建授权文件  356
14.2.2 如何查询  357
14.2.3 保存在哪里  359
14.2.4 将首选项保存到iCloud  360
14.3 小结  362
第15章 Grand Central Dispatch和后台处理  363
15.1 Grand Central Dispatch  363
15.2 SlowWorker简介  363
15.3 线程基础知识  367
15.4 工作单元  367
15.5 GCD:底层队列  368
15.5.1 傻瓜式操作  368
15.5.2 改进SlowWorker  369
15.6 后台处理  374
15.6.1 应用生命周期  375
15.6.2 状态更改通知  375
15.6.3 创建State Lab项目  376
15.6.4 执行状态的变化  377
15.6.5 利用执行状态更改  379
15.6.6 处理不活跃状态  379
15.6.7 处理后台状态  382
15.7 小结  388
第16章 使用Core Graphics绘图  389
16.1 Quartz 2D基础概念  389
16.2 Quartz 2D绘图方法  389
16.2.1 Quartz 2D图形环境  389
16.2.2 坐标系统  390
16.2.3 指定颜色  391
16.2.4 在环境中绘制图像  393
16.2.5 绘制形状:多边形、直线和曲线   393
16.2.6 Quartz 2D样例:图案、渐变色、虚线图  394
16.3 QuartzFun应用程序  395
16.3.1 构建QuartzFun应用程序  395
16.3.2 添加Quartz 2D绘制代码  403
16.3.3 优化QuartzFun应用程序  408
16.4 小结  410
第17章 Sprite Kit游戏框架  411
17.1 基础入门  411
17.2 玩家动作  420
17.2.1 向场景中插入玩家  421
17.2.2 触摸处理:玩家移动  421
17.2.3 几何运算  422
17.2.4 轻微摆动  423
17.3 创建敌人  424
17.4 在场景中放入敌人  425
17.5 开始射击  426
17.5.1 定义物理类别  426
17.5.2 创建BulletNode类  427
17.5.3 应用物理知识  428
17.5.4 在场景中添加导弹  429
17.6 利用物理引擎攻击敌人  430
17.7 实现关卡  431
17.7.1 注意敌人  432
17.7.2 进入下一关卡  432
17.8 自定义碰撞  433
17.8.1 为SKNode添加类扩展/类别  434
17.8.2 向敌人添加自定义碰撞行为  436
17.8.3 显示玩家正确的生命值  436
17.9 粒子系统  438
17.9.1 第一个粒子  438
17.9.2 向场景中加入粒子  440
17.10 游戏结束  441
17.11 创建开始场景  443
17.12 播放音乐  445
17.13 添加力场  446
17.14 小结  449
第18章 轻点、触摸和手势  450
18.1 多点触控术语  450
18.2 响应者链  451
18.2.1 响应事件  451
18.2.2 转发事件:保持响应者链的活动状态  452
18.3 多点触控体系结构  452
18.4 4 个手势通知方法  452
18.5 TouchExplorer应用  453
18.6 Swipes应用  456
18.6.1 使用触摸事件检测轻扫  457
18.6.2 自动手势识别  459
18.6.3 实现多指轻扫  460
18.7 检测多次轻点  462
18.8 检测捏合和旋转  466
18.9 自定义手势  469
18.9.1 CheckPlease应用  470
18.9.2 CheckPlease的触摸方法  471
18.10 小结  473
第19章 Core Location和Map Kit  474
19.1 位置管理器  474
19.1.1 设置精度  475
19.1.2 设置距离筛选器  475
19.1.3 获取使用定位服务的权限  475
19.1.4 启动位置管理器  475
19.1.5 合理使用位置管理器  476
19.2 位置管理器委托  476
19.2.1 获取位置更新  476
19.2.2 使用CLLocation获取纬度和经度  476
19.2.3 错误通知  478
19.3 开始构建Core Location  478
19.4 将移动路线展现在地图上  484
19.5 小结  488
第20章 陀螺仪和加速计  489
20.1 加速计物理特性  489
20.2 陀螺仪旋转特性  489
20.3 Core Motion和动作管理器  490
20.3.1 基于事件的动作  490
20.3.2 主动动作访问  494
20.3.3 陀螺仪和方位结果  496
20.3.4 加速计结果  497
20.4 检测摇动  497
20.4.1 内嵌的摇动检测  498
20.4.2 摇动与击碎  498
20.5 将加速计用作方向控制器  500
20.5.1 滚弹珠程序  501
20.5.2 实现BallView类  503
20.5.3 计算弹珠运动  506
20.6 小结  508
第21章 摄像头和照片库  509
21.1 图像选取器和UIImagePickerController  509
21.2 图像选取器控制器  509
21.3 实际测试摄像头和照片库  511
21.3.1 设计界面  512
21.3.2 实现摄像头视图控制器  515
21.4 小结  518
第22章 应用本地化  519
22.1 本地化体系结构  519
22.2 字符串文件  520
22.2.1 字符串文件的格式  520
22.2.2 本地化的字符串函数  521
22.3 现实中的iOS本地化应用  521
22.3.1 创建LocalizeMe  522
22.3.2 测试LocalizeMe  525
22.3.3 本地化项目  525
22.3.4 本地化storyboard  527
22.3.5 创建并本地化字符串文件  529
22.4 在Xcode中预览本地化  533
22.5 添加其他本地化  534
22.6 小结  535
附录 Swift简介  536

译者序: 在2014年的WWDC(WorldWide Developers Conference,苹果全球开发者大会)上,苹果公司发布了新的OS X操作系统Yosemite和移动操作系统iOS 8。iOS 8系统是iOS 7的升级版,延续了扁平化界面设计风格并增强了系统的稳定性。此外,iOS 8系统还开放了更多的API接口,以增强未来应用程序的功能并减少开发人员的工作量。
在此次开发者大会中,还有一件尤为引人注目的事情:苹果推出了全新的开发语言Swift,它可以与Objective-C共同运行于OS X和iOS平台,用于搭建基于苹果平台的应用程序。
在此之前,苹果平台推荐的开发语言一直是Objective-C。它是基于C语言的扩展,由苹果公司负责维护的面向对象语言,出现时间比C++还要早。随着OS X系统与iOS平台的不断发展,之后越来越多的移动开发者开始学习这门语言,因而其市场份额不断增大,排名也一度超越C++、C#、Javascript等主流语言。在2011年与2012年,Objective-C凭借快速上升的使用率连续两次赢得了TIOBE的年度编程语言大奖。
如今苹果公司又推出了Swift语言,必然有其重大意义。尽管Objective-C是一种非常神奇的语言,甚至比互联网的年龄还要长,不过这个已为苹果贡献多时的编程语言,想要上手却并不容易,对那些新人程序员来说更是如此。初学者难以掌握它的主要原因在于,Objective-C的语法风格独特,看起来和其他的C系语言大相径庭。
为了方便在苹果平台上的学习,降低开发应用的负担,苹果公司推出了全新的Swift语言。Swift语言的主要目标是简单易学、便捷高效,其执行速度比Python和Objective-C程序更快。Swift还与Xcode 6的Playground功能配合,可以像脚本语言一样,具有实时预览功能。开发者在输入代码后,右边屏幕会实时显示代码效果。此外,开发者还可以看到应用程序运行过程中的代码效果,从而使测试过程更加方便。
Swift语言一经推出,便立刻引起了全世界开发者的关注。Swift汲取了许多语言的特点并加以改进。对于编程老手来说,适应这种新的语言非常容易;而对于新人来说,Swift的风格更加友好。开发者问答网站Stack Overflow的调查结果显示,苹果公司的Swift语言以极大的优势成为了最受开发者欢迎的编程语言。
然而苹果公司对于Swift语言的未来发展仍有很高的期待。仅仅一年之后,在2015年的WWDC上,苹果公司又给了所有人一个惊喜:发布升级版的Swift 2,并宣布Swift语言开源,同时兼容iOS、OS X和Linux操作系统。苹果公司向广大开发者伸出了橄榄枝,这一重要举措引起了业界的一致好评。它意味着开发者将更容易掌握这门强大的编程语言,并且拓展了更广泛的实用方向。在未来,将会有更多的人去接受这一语言,全球开发者也将会越来越重视苹果平台上的应用开发。
本书中的内容讲解和示例代码同时提供了Objective-C和Swift语言两种版本 ,并针对各自的不同进行了详细的解释,其价值远胜于同时阅读两本书。读者可以根据自身情况并比较两种语言的特点,选择更加擅长的方向。通过书中层层递进的讲解,通过一个个富有代表性的示例应用,读者能够逐步掌握iOS的软件开发。无论你倾向于经典成熟的Objective-C还是灵巧轻便的Swift,它们都将能够帮助你开发出同样优秀的iOS应用程序。
本书的原作者是几位经验极为丰富的开发人员,从iPhone OS 2.0时代就开始编写苹果平台开发的书籍,直到现在已经出版了iOS系列书籍的第7版。这一系列的书籍在国内外的销量一直长盛不衰,有越来越多的程序员依靠其步入了iOS开发的殿堂。当前这一版的内容极为丰富,全面涵盖了iOS系统的许多功能,并进行了深入的探索。如此庞大厚重的一本书堪称iOS开发学习的圣经。这本书适用于所有对设计iOS应用程序感兴趣的人,无论你拥有多年的开发经验还是第一次学习编程,都可以藉由此书领略到iOS的魅力。希望你能够通过本书的学习开启通往熟练驾驭iOS应用设计的旅程。
在翻译本书的过程中遇到了许多困难,在此要感谢所有给予过我帮助的人。感谢我的家人给予我精神上的支持,感谢那些替我分担了压力的朋友,也要感谢图灵公司参与了本书编辑与校对等工作的每个人,正是由于你们的努力才能保证它的质量。尽管如此,书中依然难免有疏漏之处,希望读者能够包涵并向我们提出宝贵的建议,也希望你们的应用能够早日登上App Store。
周庆成

媒体评论: 亚马逊读者评论
“这本书简直太棒了!是我买过的性价比极高的一本书。作者非常清楚地解释了作出每种选择的原因以及每个iOS组件的特性,从而教你一种思维方式,而不是简单地完成每项任务。”
豆瓣读者评论
“这本书主要针对零基础读者,讲解得很详细。读完这本书再看代码会理解很多以前看不懂的东西。每个章节都是一个实例,很实用。我个人非常喜欢这种面面俱到的书,可以让你少走一些弯路。”
“(这本书是)学习iPhone开发必读的一本书,内容详细,条理清晰,例子丰富、有针对性。”