具体描述
本书是iOS应用开发基础教程,内容翔实,语言生动。作者结合大量实例,使用Swift语言循序渐进地讲解了适用于iPhone/iPad开发的基本流程。新版介绍强大的iOS 10操作系统,涵盖Xcode 8的新功能,书中所有案例全部重新编写。
作者简介
作者简介:
Molly Maskrey
iOS开发与配件设计公司Global Tek Labs联合创始人,有丰富的iOS软件和硬件开发经验。
Kim Topley
苹果公司高级软件工程师,拥有30多年软件开发经验。
David Mark
经验丰富的Mac技术开发专家,iOS/Android开发公司MartianCraft联合创始人。
Fredrik Olsson
Cocoa/iPhone开发专家。
Jeff LaMarche
资深Mac与iOS开发人员,拥有20多年开发经验;MacTech杂志和苹果公司开发人员网站的专栏作家。Jeff关于iOS开发的博文广受欢迎,其博客地址为www.iphonedevelopment.blogspot.com。
目录信息
1.1 关于本书 1
1.2 必备条件 2
1.2.1 选择开发者计划 3
1.2.2 必备知识 5
1.2.3 iOS应用程序的特点 5
1.3 本书内容 8
1.3.1 新版增加内容 9
1.3.2 Swift和Xcode版本 9
1.3.3 准备好了吗 9
第2章 创建第一个App 10
2.1 创建“Hello, World!”项目 10
2.1.1 Xcode项目窗口 13
2.1.2 深入了解项目 20
2.2 Interface Builder简介 21
2.2.1 文件格式 22
2.2.2 storyboard 22
2.2.3 实用工具 23
2.2.4 在视图中添加标签 24
2.2.5 属性修改 27
2.3 画龙点睛——美化iPhone应用程序 28
2.4 启动界面 32
2.5 在设备上运行应用 33
2.6 小结 36
第3章 基本的用户交互 37
3.1 MVC模式 37
3.2 创建ButtonFun应用 38
3.3 视图控制器 39
3.3.1 输出接口和操作方法 40
3.3.2 精简视图控制器代码 41
3.3.3 设计用户界面 42
3.3.4 测试ButtonFun应用 49
3.3.5 布局预览 57
3.3.6 改变文本样式 59
3.4 应用程序委托 60
3.5 小结 62
第4章 更丰富的用户界面 63
4.1 动态控件、静态控件和被动控件 66
4.2 创建Control Fun应用程序 66
4.3 实现图像视图和文本框 67
4.3.1 添加图像视图 67
4.3.2 调整图像视图的大小 69
4.3.3 设置视图属性 71
4.3.4 添加文本框 72
4.3.5 添加约束 78
4.3.6 创建并关联输出接口 79
4.4 关闭键盘 80
4.4.1 按下Done按钮关闭键盘 81
4.4.2 触摸背景关闭键盘 82
4.4.3 添加滑动条和标签 83
4.4.4 创建并关联操作方法和输出接口 85
4.4.5 实现操作方法 85
4.5 实现开关、按钮和分段控件 86
4.5.1 添加两个带标签的开关 87
4.5.2 为开关创建并关联输出接口和操作方法 87
4.5.3 实现开关的操作方法 88
4.5.4 控件状态 90
4.5.5 为按钮创建并关联输出接口和操作方法 91
4.6 实现分段控件的操作方法 91
4.7 实现操作表单和警告视图 92
4.7.1 显示操作表单 92
4.7.2 显示警告视图 95
4.8 小结 96
第5章 自动旋转 97
5.1 自动旋转机制 98
5.1.1 点、像素和Retina显示屏 98
5.1.2 控制旋转 98
5.2 创建Orientations项目 99
5.2.1 应用级支持的方向 99
5.2.2 独立控制器的旋转支持 101
5.3 创建布局项目 102
5.3.1 覆盖默认的约束 105
5.3.2 与屏幕等宽的标签 107
5.4 创建自适应布局 109
5.4.1 创建Restructure 应用程序 109
5.4.2 设置iPhone的横向(wC hC)配置布局 116
5.4.3 设置iPad(以及iPhone Plus横向)的wR hR配置 124
5.5 小结 131
第6章 创建多视图应用 132
6.1 多视图应用的常见类型 132
6.2 多视图应用的体系结构 135
6.2.1 根控制器 137
6.2.2 内容视图剖析 137
6.3 构建View Switcher项目 137
6.3.1 重命名视图控制器 137
6.3.2 添加内容视图控制器 139
6.3.3 修改SwitchingViewController.swift 140
6.3.4 创建拥有工具栏的视图 140
6.3.5 连接工具栏按钮和视图控制器 142
6.3.6 编写根视图控制器 143
6.3.7 实现内容视图 147
6.3.8 过渡动画效果 150
6.4 小结 152
第7章 分页栏与选取器 153
7.1 Pickers应用程序 153
7.2 委托和数据源 156
7.3 创建Pickers应用程序 157
7.3.1 创建视图控制器 157
7.3.2 创建分页栏控制器 158
7.3.3 首次模拟器测试 161
7.3.4 实现日期选取器 162
7.4 实现单滚轮选取器 164
7.4.1 构建视图 164
7.4.2 将控制器实现为数据源和委托 168
7.5 实现多滚轮选取器 170
7.5.1 构建视图 170
7.5.2 实现控制器 170
7.5.3 滚轮内容根据环境变化 172
7.6 使用自定义选取器创建一个简单游戏 178
7.6.1 编写控制器头文件 178
7.6.2 构建视图 178
7.6.3 实现控制器 179
7.6.4 最后的细节 182
7.7 小结 185
第8章 表视图简介 186
8.1 表视图基础 186
8.1.1 表视图和表视图单元 186
8.1.2 分组表和连续表 187
8.2 实现一个简单表 188
8.2.1 设计视图 188
8.2.2 实现控制器 190
8.2.3 添加一个图像 193
8.2.4 表视图单元样式 194
8.2.5 设置缩进级别 197
8.2.6 处理行的选择 197
8.2.7 更改字体大小和行高 199
8.3 定制表视图单元 200
8.4 实现自定义表视图应用程序 201
8.4.1 创建UITableViewCell子类 201
8.4.2 从XIB文件加载UITableViewCell 205
8.5 分组分区和索引分区 210
8.5.1 构建视图 210
8.5.2 导入数据 211
8.5.3 实现控制器 212
8.5.4 添加索引 214
8.5.5 添加搜索栏 215
8.5.6 视图调试器 220
8.6 小结 222
第9章 表视图中的导航控制器 223
9.1 导航控制器基础 223
9.1.1 栈的概念 223
9.1.2 控制器栈 224
9.2 简单的字体浏览器:Fonts 225
9.2.1 Fonts应用的子控制器 225
9.2.2 Fonts应用的基础框架 227
9.2.3 创建根视图控制器 230
9.2.4 初始化storyboard 232
9.2.5 第一个子控制器:字体列表视图 233
9.2.6 设计字体列表的storyboard 235
9.3 创建字体尺寸视图控制器 237
9.3.1 设计字体尺寸视图控制器的storyboard 238
9.3.2 对字体列表视图控制器的转场进行设置 238
9.3.3 创建字体信息视图控制器 239
9.3.4 设计字体信息视图控制器的storyboard 240
9.3.5 调整字体列表视图控制器的转场 243
9.3.6 我的收藏字体 244
9.3.7 补充功能 244
9.3.8 实现轻扫删除 244
9.3.9 实现拖动排序 246
9.4 小结 247
第10章 集合视图 248
10.1 创建DialogViewer项目 248
10.1.1 配置自定义单元 249
10.1.2 配置视图控制器 252
10.1.3 提供内容单元 252
10.1.4 实现流动布局 254
10.1.5 实现标题视图 255
10.2 小结 257
第11章 iPad应用中的分割视图和浮动窗口 258
11.1 创建基于UISplitViewController的分割视图应用程序 260
11.1.1 在storyboard中定义结构 262
11.1.2 使用代码定义功能 263
11.1.3 Master-Detail模板应用程序的工作原理 266
11.1.4 添加总统信息 268
11.1.5 创建浮动窗口 272
11.2 小结 277
第12章 应用设置和用户默认设置 278
12.1 设置捆绑包入门 278
12.2 Bridge Control应用程序 279
12.2.1 创建项目 282
12.2.2 使用设置捆绑包 283
12.2.3 读取应用中的设置 295
12.2.4 在应用中修改默认设置 298
12.2.5 注册默认值 300
12.2.6 保证设置有效 300
12.2.7 切换到Settings应用程序 302
12.3 小结 303
第13章 数据持久化基础知识 304
13.1 应用程序的沙盒 304
13.1.1 获取Documents和Library目录 307
13.1.2 获取临时目录 308
13.2 文件保存方案 308
13.2.1 单文件持久化 308
13.2.2 多文件持久化 309
13.3 属性列表 309
13.3.1 属性列表序列化 309
13.3.2 创建Persistence应用程序的第一个版本 310
13.4 对模型对象进行归档 314
13.4.1 遵循NSCoding协议 314
13.4.2 实现NSCopying协议 315
13.4.3 对数据对象进行归档和取消归档 316
13.4.4 归档应用 316
13.4.5 使用iOS嵌入的SQLite3 318
13.4.6 创建或打开数据库 319
13.4.7 使用绑定变量 320
13.5 创建SQLite3应用程序 321
13.6 使用Core Data 325
13.6.1 实体和托管对象 326
13.6.2 Core Data应用 329
13.6.3 修改AppDelegate.swift文件 332
13.7 小结 338
第14章 文档和iCloud 339
14.1 使用UIDocument管理文档存储 340
14.1.1 构建TinyPix 340
14.1.2 创建TinyPixDocument类 340
14.1.3 主控制器代码 342
14.1.4 设置storyboard 348
14.1.5 创建TinyPix视图的类 350
14.1.6 设计storyboard的详情视图 353
14.2 添加iCloud支持 356
14.2.1 创建配置描述文件 356
14.2.2 如何查询 359
14.2.3 保存位置 360
14.2.4 将偏好设置保存到iCloud 361
14.3 小结 363
第15章 用Grand Central Dispatch进行多线程编程 364
15.1 创建SlowWorker应用程序 365
15.1.1 线程基础知识 367
15.1.2 工作单元 368
15.1.3 GCD:底层队列 368
15.1.4 改进SlowWorker 369
15.2 后台处理 372
15.3 应用生命周期 373
15.4 状态更改通知 373
15.4.1 创建State Lab项目 374
15.4.2 探索执行状态 375
15.4.3 利用执行状态更改 376
15.4.4 处理不活跃状态 377
15.4.5 处理后台状态 380
15.4.6 进入后台时保存状态 382
15.5 小结 385
第16章 图形与绘制 386
16.1 Quartz 2D基础概念 386
16.2 Quartz 2D绘图方法 387
16.2.1 Quartz 2D图形环境 387
16.2.2 坐标系统 388
16.2.3 指定颜色 389
16.2.4 在环境中绘制图像 390
16.2.5 绘制形状:多边形、直线和曲线 390
16.2.6 Quartz 2D样例:图案、渐变色、虚线图 391
16.3 QuartzFun应用程序 392
16.3.1 构建QuartzFun应用程序 392
16.3.2 添加Quartz 2D绘制代码 398
16.3.3 优化QuartzFun应用程序 402
16.4 小结 404
第17章 SpriteKit制作简单游戏 405
17.1 创建TextShooter应用 405
17.1.1 自定义初始场景 408
17.1.2 玩家移动 411
17.1.3 创建敌人 415
17.1.4 在场景中加入敌人 416
17.1.5 开始射击 417
17.1.6 物理攻击敌人 420
17.1.7 完成关卡 421
17.1.8 自定义碰撞 423
17.1.9 粒子系统 426
17.1.10 向场景中加入粒子 428
17.1.11 游戏结束 430
17.1.12 创建开始场景 432
17.1.13 添加音效 434
17.1.14 添加力场:为游戏提高一些难度 434
17.2 小结 437
第18章 轻点、触摸和手势 438
18.1 多点触控术语 438
18.2 响应者链 439
18.2.1 响应事件 439
18.2.2 转发事件:保持响应者链的活动状态 440
18.3 多点触控体系结构 440
18.4 4 个手势通知方法 440
18.5 TouchExplorer应用 441
18.5.1 创建Swipes应用程序 445
18.5.2 使用触摸事件检测轻扫 445
18.5.3 自动手势识别 447
18.5.4 实现多指轻扫 448
18.5.5 检测多次轻点 450
18.5.6 检测捏合和旋转 453
18.6 小结 456
第19章 确定位置 457
19.1 位置管理器 457
19.1.1 设置期望精度 457
19.1.2 设置距离筛选器 458
19.1.3 获取使用定位服务的权限 458
19.1.4 启动位置管理器 458
19.1.5 合理使用位置管理器 458
19.2 位置管理器委托 459
19.2.1 获取位置更新 459
19.2.2 使用CLLocation获取纬度和经度 459
19.2.3 错误通知 461
19.3 创建WhereAmI应用程序 461
19.3.1 更新位置管理器 465
19.3.2 将移动路线展现在地图上 467
19.3.3 更改定位服务权限 470
19.4 小结 471
第20章 设备方向与动作 472
20.1 加速计物理特性 472
20.2 陀螺仪旋转特性 473
20.3 Core Motion和动作管理器 473
20.3.1 创建MotionMonitor应用程序 473
20.3.2 主动动作访问 476
20.3.3 陀螺仪和方位结果 478
20.3.4 加速计结果 479
20.4 检测摇动 480
20.4.1 内嵌的摇动检测 480
20.4.2 摇动与破碎 480
20.5 将加速计用作方向控制器 482
20.5.1 Ball应用程序 482
20.5.2 实现BallView类 484
20.5.3 计算弹珠运动 486
20.6 小结 488
第21章 摄像头和照片图库 489
21.1 图像选取器和UIImagePickerController 489
21.1.1 图像选取器控制器 489
21.1.2 实现图像选取器控制器委托 491
21.2 设计Camera界面 492
21.2.1 隐私选项 494
21.2.2 实现摄像头视图控制器 495
21.3 小结 498
第22章 本地化翻译应用 499
22.1 本地化体系结构 499
22.2 字符串文件 500
22.2.1 字符串文件的格式 500
22.2.2 本地化的字符串函数 501
22.3 创建LocalizeMe应用 502
22.3.1 本地化项目 505
22.3.2 本地化storyboard 508
22.3.3 创建并本地化字符串文件 512
22.3.4 应用显示名称的本地化 516
22.3.5 添加其他本地化 517
22.4 小结 517
22.5 全书总结 518
附录A Swift简介 519
· · · · · · (收起)
读后感
零基础的第一本书 这本书主要是针对0基础,讲解的很详细。 读玩这本书再看代码会理解很多以前看不懂的东西, 每个章节都是一个实例,很实用。 提高的部分,本书并每有涉及到,我个人非常喜欢这种面面俱到的书,可以让你少走一些弯路。
做iPhone开发的时间比较早,当时除了官方文档外,没有什么参考。印象中这本书好像是最早翻译成中文的iPhone开发书。过了这几年iOS SDK从当时的2.0一路走过来,本书也再版多次。但是看到的时候还是倍感亲切。 如果您从来没有接触过iOS方面的开发。这本书应该是不错的选择,涵盖...
苹果系列产品的魅力难以抵挡,培养了一大批忠实的“果粉”,也成为科技、创新、潮流的代名词。其推出的iPhone 4手机备受消费者推崇,在市场上的杀伤力呈显增强的趋势,尤其在中国市场,更出现了一机难求的局面。 在成功推出iPad和iPhone系列产品后,今年苹果公司又推出了平板...
买后就后悔了,内容写得很繁琐,建议先看一些入门视频,再看斯坦福公开课iOS。 而且iOS开发更新换代很快,真得没必要买本入门书籍,网络上有非常多的资料可以学习。 比如 官网的资料 http://www.raywenderlich.com/ 和斯坦福公开课iOS
用户评价
这本书在底层技术和系统交互方面的讲解,简直可以作为面试准备的圣经。我特别关注了关于内存管理和性能优化的那部分内容。它没有停留在 ARC 的基础知识上,而是深入到了 Swift 编译器的优化策略,以及如何通过 `unsafe` 操作符在极端性能要求下进行手动干预,同时又不至于引入不可控的内存泄漏。作者通过实际的性能分析工具截屏,对比了不同数据结构(如 `Array` 和 `Set`)在不同操作集下的实际性能开销,这为我的日常代码审查提供了坚实的理论基础。更让我印象深刻的是,它详尽阐述了 `dyld` 的加载过程,以及应用启动时的初始化顺序,这在排查启动延迟问题时简直是雪中送炭。即便是一些看似枯燥的系统 API,例如 I/O 操作和沙盒机制,作者也总能找到一个绝妙的例子来佐证其重要性,比如如何安全高效地处理大文件的流式传输,而不是简单地一次性加载到内存。读完这一块,我感觉自己对“运行在设备上”的这个过程有了更清晰、更底层的认知。
这本书的实战性是毋庸置疑的,它简直就是一本行动指南。不同于许多教科书只关注“纯净”的业务逻辑,本书非常坦诚地讨论了在真实世界中开发会遇到的所有混乱。比如,在网络层设计这一章,作者没有止步于介绍 `URLSession`,而是详细构建了一个多层级的网络服务框架,它涵盖了请求的拦截器模式(用于注入认证 Token)、响应的解析流水线,以及健壮的错误恢复机制。书中对错误处理的哲学探讨尤其深刻,它区分了“操作失败”和“业务异常”,并给出了如何将这些信息优雅地反馈给用户的最佳实践。此外,在测试部分,作者毫不吝啬地分享了如何构建一个既易于维护又覆盖率高的单元测试和 UI 测试套件,特别是如何有效地 Mock 依赖项和隔离外部服务,这一点对于提升团队的交付质量至关重要。它教会我的不仅仅是编写代码,更是如何构建一个可维护、可测试、可依赖的软件工程流程。
我必须提到,作者在用户体验和可访问性(Accessibility)方面投入的精力,展现出了一种难得的匠人精神。在讲解界面设计时,它强调了构建适应性布局的重要性,不仅仅是不同尺寸的设备,还包括针对 iPad 的多任务视图和不同操作系统的版本迭代。作者通过一个精心设计的案例,展示了如何利用 `UICollectionViewCompositionalLayout` 来创建既美观又高效的瀑布流布局,并且确保其在旋转和多尺寸环境下都能平滑过渡。更重要的是,关于辅助技术的集成,书中详细说明了如何正确地设置 `accessibilityLabel`, `accessibilityHint` 和 `accessibilityTraits`,以及如何进行 Focus Engine 的定制化管理,这确保了即便是视力障碍的用户也能流畅地使用应用。这种对细节的关注,体现了现代移动应用开发中“包容性设计”的核心价值。阅读这些章节,我深刻体会到,一个“精通”的开发者,其能力边界绝不应局限于代码本身,而应延伸到最终用户如何感知和交互的每一个细微之处。
拿到这本编程巨著时,我几乎是被它的厚度所震撼的。初翻目录,我就知道这不是那种只停留在表面概念的入门读物,它深入骨髓地剖析了整个移动开发的生态系统。比如,关于数据持久化那一章,作者并没有满足于讲解 Core Data 的基本 CRUD 操作,而是花了大篇幅去讨论如何在复杂的企业级应用中实现高效的数据同步策略,特别是针对离线优先(Offline-First)架构的实践案例,详细对比了 Realm 和 SQLite 在性能、并发控制以及模型迁移方面的优劣。书中对 Swift 语言新特性的引入总是非常及时且富有洞察力,它不仅仅是告诉你“这个新特性是什么”,更重要的是解释了“为什么这个特性存在”以及“在什么场景下使用它能带来显著的性能提升或代码可读性增强”。我尤其欣赏作者在讲解并发编程时,那种抽丝剥茧的细致,从 GCD 的底层队列管理到 Swift Concurrency (async/await) 的现代化实现,每一个复杂的概念都被拆解成了易于理解的步骤,配以清晰的流程图和实际场景代码,让人感觉自己像是跟着一位经验老道的架构师在进行一对一的辅导。这本书的价值,在于它教会你如何从一个“能跑起来”的开发者,蜕变为一个“能设计出健壮、高性能”的系统工程师。
读完有关 SwiftUI 声明式 UI 的章节后,我感觉自己对用户界面设计的理解被彻底重塑了。这本书没有把 SwiftUI 写成一个仅仅是 UIKit 的替代品,而是将其定位为一种全新的、面向未来的设计范式。作者在描述视图层级构建时,非常注重状态管理和数据流的清晰性,特别是关于 `State`, `Binding`, `ObservedObject` 以及最新 `Observable` 宏的区分和恰当使用,作者给出了大量在实际应用中可能遇到的“陷阱”及规避方法,这远超出了官方文档的范畴。我记得有一节专门讨论了混合使用 UIKit 和 SwiftUI 的桥接问题(`UIViewRepresentable` 和 `UIViewControllerRepresentable`),作者不仅展示了如何嵌入旧有组件,更深入探讨了两者之间生命周期同步的微妙之处,这对于正在进行项目迭代的团队来说是无价之宝。此外,对于高级布局,例如自定义 `Layout` 协议的应用,书中展示了如何构建具有复杂自适应行为的组件,这让我的代码库在处理动态内容时,摆脱了过去使用 Auto Layout 时的那种束缚感和冗余代码。它不是教你“如何使用”API,而是教你“如何思考”界面背后的逻辑。
只看了 1-4,18-22这几张。了解下移动端开发思维。 就不和windows核心编程对标,和windows程序设计这本比起来也是完全没有什么深度可言。 另外swift不用分号和if、for不用小括号,好难受。 另外这上面是swift3写的,好多不能用得查改为swift4略蛋疼。
英文版
太多版本的坑
英文版
英文版