第1章 欢迎来到iOS和Swift世界 1
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创建S1owWorker应用程序 365
15.1.1线程基础知识 367
15.1.2工作单元 368
15.1.3 GCD:底层队列 368
15.1.4改进S1owWorker 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