基本信息
书名:iOS移动开发从入门到精通
定价:99.00元
作者:李发展、王亮
出版社:清华大学出版社
出版日期:2017-03-01
ISBN:9787302462026
字数:
页码:
版次:1
装帧:平装-胶订
开本:128开
商品重量:0.4kg
编辑推荐
本书采用丰富的实例,直观的代码展示,向读者形象地展现了在创建一款*的iOS应用程序时,所需要的大部分知识和技巧。通过对本书的学习,读者可以建立起iOS 10技*的思想框架,并且对iOS 10开发的过程有一个全面的了解,高效地开发出自己的iOS应用程序。
内容提要
本书由iOS开发工程师精心编撰,系统地介绍了使用iOS 10 Swift 3 Xcode 8开发移动应用的关键技*。本书共分三篇,篇为基础篇,主要介绍了iOS开发基础知识,包括iOS系统的历史、Swift 3.0语言、UI界面构建技*、视图控制器、常用的控件、表和集合视图、视图和层、声音、视频、动画等。二篇为进阶篇,主要介绍了Alamofire网络服务、数据的持久化、多线程、CoreText、CoreI*ge、Storyboard、自动化测试、性能分析、本地化、加密与安全等实用技*。三篇为实例篇,通过对实体层、表现层和逻辑层三层相关技*的讲解,向读者详细展示了MVC设计模式在项目开发中的应用方式,并终创建一个成熟的商业项目。本书采用丰富的实例,直观的代码展示,向读者形象地讲解了在创建一款*的iOS应用程序时,所需要的大部分技巧,帮助读者轻松掌握并高效开发iOS程序。本书适合iOS开发新手、iOS程序员、iPhone开发人员、iPad开发人员使用,也可以作为相关培训机构和大专院校相关专业的教学用书。
目录
目 录
*章 开发准备 1
1.1iOS移动开发现状 2
1.1.1iOS的历史 2
1.1.2iOS 10的十大变化 4
1.1.3iOS应用开发的八个特点 5
1.2iOS 10的新功能 5
1.2.1SiriKit 6
1.2.2Proa*ive Suggestions
(预建议) 6
1.2.3Integr*ing with the Messages
App 7
1.2.4User Notific*ions 7
1.2.5Speech Recognition 8
1.2.6Wide Color 9
1.2.7Adapting to the True Tone
Display 9
1.2.8Widget Enhancements 9
1.2.9Security and Privacy
Enhancements 9
1.3 成为一名iOS开发者 11
1.3.1硬件上的需求 11
1.3.2加入Apple开发者计划 11
1.3.3下载安装Xcode和模拟器 13
1.3.4创建开发和发布配置文件Provisioning Profile 14
1.4 创建一个基本的iOS项目 17
1.4.1项目的创建 17
1.4.2设置项目的信息 19
1.4.3设置应用的Icon图标 19
1.4.4设置应用的Launch图* 20
1.4.5编译并运行项目 22
1.5iOS应用的生命周期 23
1.5.1iOS应用程序的状态 24
1.5.2演示iOS应用程序的各种
状态 25
1.6 小结 26
2章 Xcode 8 IDE和iOS模拟器 27
2.1Xcode 8的使用 28
2.1.1工具栏的使用 28
2.1.2导航器的功能介绍 29
2.1.3项目导航器中的内容 30
2.1.4创建一个组和Swift文件 30
2.1.5在项目中搜索文件 33
2.1.6代码的查找和替换 36
2.1.7代码的Debug调试 36
2.2iOS模拟器的使用 39
2.2.1使用多种iOS模拟器 39
2.2.2iOS模拟器方向的切换 40
2.2.3iOS模拟器语言的切换 40
2.2.4截取模拟器屏幕 41
2.2.5应用程序的退出和删除 41
2.3 小结 42
3章 Swift 3.0的基础知识 43
3.1Swift的基本概念 44
3.1.1Swift语言的特点 44
3.1.2Swift常量和变量的定义 45
3.1.3常量和变量的输出 46
3.1.4注释 47
3.1.5Playground 47
3.2 数据类型与运算 49
3.2.1布尔类型 49
3.2.2Int类型及实例属性 50
3.2.3浮点类型及实例属性 51
3.2.4字符和字符串 51
3.2.5元组类型 54
3.2.6一元、二元和三元运算符 55
3.2.7比较运算符 56
3.3 循环语句和条件判断语句57
3.3.1for循环 57
3.3.2while循环语句 58
3.3.3repe*-while循环语句 59
3.3.4if条件判断语句 60
3.3.5switch条件判断语句 60
3.3.6continue语句和forthrough
语句 61
3.4 数组和字典 62
3.4.1数组 62
3.4.2多维数组 64
3.4.3数组的遍历 65
3.4.4字典 66
3.5 小结 68
4章 Swift 3.0的进阶内容 69
4.1 函数 70
4.1.1函数的定义和调用 70
4.1.2为参数设置默认值 71
4.1.3设置可变的函数参数数量 71
4.1.4函数作为参数和返回类型 72
4.1.5元组作为函数的返回类型,
实现多个返回值 74
4.1.6使用函数类型 74
4.1.7函数的输入输出参数 75
4.1.8函数的嵌套 76
4.1.9函数的递归用法 76
4.1.10常用的内置函数 77
4.2 枚举和结构体 79
4.2.1枚举 79
4.2.2结构体 83
4.3 类 85
4.3.1类的创建 85
4.3.2类属性的set和get方法 88
4.3.3类属性的willSet和didSet
方法 89
4.3.4类的静态方法 90
4.3.5类的析构 91
4.3.6类的继承 92
4.3.7类的延迟加载属性l*y 93
4.3.8类的引用特征 95
4.3.9类型检查 95
4.3.10Any和Anyob*e* 98
4.4 扩展、协议和其他 99
4.4.1扩展 99
4.4.2协议 101
4.4.3问号和感叹号! 103
4.5 小结 105
5章 视图UIView和层CALayer 106
5.1 视图UIView 107
5.1.1UIView概述 107
5.1.2UIView的外观属性 109
5.1.3UIView的几何属性 112
5.1.4UIView的嵌套和层次关系 114
5.1.5UIView的交互属性 116
5.1.6UIView的变形作 118
5.1.7自定义UIView视图 120
5.2CALayer层 124
5.2.1CALayer边框 124
5.2.2CALayer阴影 125
5.2.3CALayer圆角 126
5.2.4CALayer渐变 127
5.3 小结 129
6章 视图控制器UIViewController130
6.1UIViewController视图控制器概述 131
6.1.1视图控制器与MVC 131
6.1.2创建一个视图控制器 132
6.1.3以模态方式弹出视图控制器 136
6.1.4视图控制器的生命周期 139
6.1.5视图控制器和UIScrollView 141
6.2UITabBarController 145
6.2.1创建一个UITabBarController 145
6.2.2改变Tab bar的位置 147
6.2.3改变UITabBarController
索引 149
6.2.4在Tab图标上显示角标 149
6.3UINavig*ionController 150
6.3.1创建一个UINavig*ionController
151
6.3.2UINavig*ionController视图
入栈和出栈 153
6.3.3导航栏和工具栏的显示和
隐藏 157
6.3.4导航栏样式的修改 157
6.4 导航控制器和标签控制器158
6.5 小结 161
7章 常用经典控件 162
7.1 控件概述 163
7.1.1何为Target-A*ion机制 163
7.1.2UIControl类的方法和属性 165
7.1.3让我们一起动手来实现一个UIControl吧 167
7.2UIButton的概述 168
7.3UILabel文本视图 171
7.3.1UILabel的创建和文案显示 172
7.3.2UILabel处理过长的文案 173
7.3.3UILabel的阴影 174
7.4UISwitch开关视图 175
7.4.1UISwitch的创建 175
7.4.2UISwitch的开关使用 176
7.5UIRefreshControl 刷新控件 176
7.6UITextField文本框控件 178
7.6.1UITextField的创建和基本
应用 179
7.6.2UITextField的背景图 180
7.6.3UITextField的浮动视图(Overlay view) 181
7.6.4UITextField的代理UITextFieldDeleg*e 183
7.7 小结 185
8章 UITableView和UIColle*ionView
186
8.1UITableView概述 187
8.1.1UITableViewCell单元格 187
8.1.2创建一个简单的表格 189
8.1.3自定义单元格UITableViewCell
193
8.1.4自定义单元格的高度 196
8.1.5给表格添加章节和索引 198
8.1.6单元格的选择与取消选择 201
8.1.7单元格的*入和删除 204
8.1.8 移动单元格的位置 209
8.1.9表格之间的嵌套 213
8.2UIColle*ionView概述 219
8.2.1UIColle*ionView的实现
原理 220
8.2.2创建一个 UIColle*ionView对象并添加点击事件 221
8.3 小结 225
9章 触屏事件和触摸手势 226
9.1 触摸事件的监测 227
9.1.1对触摸事件阶段的监测 227
9.1.2监测是否触摸到某个视图 229
9.1.3实现图像视图的拖动 231
9.2 触摸手势的使用 232
9.2.1实现单点触摸手势 233
9.2.2实现双击触摸手势 235
9.2.3实现长按手势的监测 236
9.2.4捏合手势的监测 238
9.33D Touch的使用 239
9.4 小结 242
*0章 动画、声音与视频 243
10.1制作动画 244
10.1.1UIView的动画 244
10.1.2使用UII*geView播放帧
动画 249
10.1.3位移关键帧动画的制作 251
10.2音频的播放 254
10.2.1使用System Sound Services
播放简短声音 255
10.2.2使用AVAudioPlayer播放
音乐 256
10.3视频的播放 260
10.3.1使用AVPlayer播放影* 260
10.3.2实现影*的画中画功能 262
10.4小结 265
*1章 Alamofire网络请求框架 266
11.1Alamofire的前世今生 267
11.1.1Alamofire的手动集成 267
11.1.2Alamofire的网络是否联通和
连接方式 269
11.1.3Alamofire的GET和POST
请求 272
11.1.4Alamofire的文件上传及
进度显示 274
11.1.5Alamofire的文件下载及
进度显示 278
11.2小结 279
*2章 UIWebView与HTML 5技* 280
12.1UIWebView的使用 281
12.1.1使用UIWebView加载网页 281
12.1.2使用UIWebView加载HTML
字符串和GIF动画 283
12.1.3使用UIWebView加载本地
网页 286
12.1.4使用回调原生
程序 289
12.2创建一个简单的笔记本 292
12.2.1创建一个可编辑的div 292
12.2.2设置网页的CSS样式 293
12.2.3添加*入笔记图*的方法 294
12.2.4添加删除图*和获得笔记的
方法 295
12.2.5实现笔记本的用户界面 296
12.3小结 298
*3章 数据的持久化 299
13.1解析plist文件 300
13.1.1创建和解析plist文件 300
13.1.2将信息写入plist文件 303
13.2使用CoreD*a进行数据的持久化 304
13.2.1创建Core D*a实体并*入
数据 306
13.2.2检索Core D*a中的数据 308
13.2.3修改和删除Core D*a数据 310
13.3小结 312
*4章 多线程技* 313
14.1多线程的概念 314
14.1.1任务、进程和线程 314
14.1.2线程的Stack space 315
14.1.3线程的优先级 315
14.1.4线程的生命周期 315
14.1.5线程和Run loop 316
14.2使用Thread 316
14.2.1创建Thread下载图* 317
14.2.2给Thread加锁使线程同步 319
14.3Oper*ion技*的使用 322
14.4Grand Central Disp*ch的使用 325
14.4.1使用GCD查询IP地址
信息 326
14.4.2Disp*chGroup调度组的
使用 328
14.5小结 329
*5章 MapKit地图 330
15.1Map Kit的概念 331
15.1.1MKMapView的显示区域 331
15.1.2MKMapView的跟踪和
定位 332
15.1.3MKMapView的交互选项和
装饰物 333
15.1.4创建一个MKMapView
地图 333
15.1.5MKMapView代理的使用 335
15.1.6自定义annot*ionView和
calloutView 337
15.1.7Camera相机的使用 341
15.2小结 342
*6章 iOS的图文混排技* 343
16.1Core Text的使用 344
16.1.1文字排版方面的一些基本
概念 344
16.1.2列出设备中的所有字体 346
16.1.3富文本的创建 347
16.1.4图文混排的实现 350
16.2Text Kit的使用 354
16.2.1使用Text Kit对文字进行
分栏 354
16.2.2使用Text Kit制作图文混排
效果 357
16.3小结 359
*7章 iOS的图像和视频处理技*360
17.1Core I*ge概述 361
17.1.1使用Core I*ge的三个类
制作单*调效果 362
17.1.2使用Core I*ge给图*添加
马赛克 363
17.1.3使用Core I*ge处理视频
画面 364
17.1.4输出Core I*ge的所有
滤镜 369
17.1.5使用CIDete*or和CIFe*ure
进行人脸检测 370
17.2UIBlurEffe*和CGBlendMode 372
17.2.1使用UIBlurEffe*实现*玻璃
效果 372
17.2.2使用CGBlendMode实现颜*
混合效果 373
17.3小结 376
*8章 iOS常用设备的使用 377
18.1Photos和Camera的使用 378
18.1.1读取Photos中的图* 378
18.1.2调用相机拍摄照* 382
18.2定位设备的使用 384
18.2.1使用定位设备获取设备地理
位置 385
18.2.2将地理坐标转换为实际
地名 388
18.3陀螺仪和加速计设备的使用 390
18.3.1陀螺仪的原理和应用 390
18.3.2加速计的原理和应用 390
18.3.3检测iOS设备的晃动 391
18.4小结 393
*9章 Storyboard故事板的使用 394
19.1Storyboard概述 395
19.1.1Storyboard的优缺点 395
19.1.2故事板的组织形式 396
19.1.3创建一个Storyboard 397
19.1.4更改故事板的初始视图
控制器 398
19.2在Storyboard中使用标准控件 400
19.2.1添加三个控件 400
19.2.2对控件进行连接 402
19.3在Storyboard中使用表格控件 405
19.3.1在故事板中添加Table View 405
19.3.2添加Table View Cell 405
19.3.3设置Table View的数据源 407
19.3.4修改ViewController.swift
文件 408
19.4在Storyboard中使用集合控件 409
19.4.1添加Colle*ion View 409
19.4.2设置Colle*ion View Cell 409
19.4.3设置Colle*ion View的数据源
和代理 411
19.4.4修改ViewController.swift
文件 412
19.5Storyboard常见的层次结构 413
19.6Storyboard之间的页面跳转和参数
传递 417
19.6.1单个Storyboard中页面间的
参数传递 417
19.6.2多个Storyboard中的页面跳转
及参数传递 420
19.7使用约束功能适配多分辨率 424
19.7.1打开并运行示例项目 424
19.7.2给父视图MainView添加
约束 426
19.7.3给三个分隔线添加约束 428
19.7.4给两个小箭头添加约束 429
19.7.5给添加新会员按钮添加
约束 431
19.7.6给无数据图标添加约束 432
19.8小结 433
20章 界面测试和自动化测试434
20.1单元测试概述 435
20.1.1Xocde的XCTest框架 435
20.1.2对其他类的方法进行单元
测试 438
20.1.3使用XCTest框架进行性能
测试 441
20.2UI Testing界面测试 442
20.2.1往项目中*入UI Testing 443
20.2.2制作UI测试的程序 444
20.2.3录制UI Testing步骤 446
20.2.4播放UI Testing的录制
步骤 446
20.3使用UIAuto*tion进行自动化
测试 447
20.3.1使用UIAuto*tion录制
自动化测试代码 447
20.3.2测试脚本的保存和加载 449
20.4小结 449
21章 iOS应用程序内存泄*的检测451
21.1Alloc*ions工具的使用 452
21.2Leaks工具的使用 458
21.3小结 461
22章 iOS应用程序的本地化 462
22.1应用程序的本地化 463
22.1.1应用程序名称的本地化 463
22.1.2应用程序文字内容的本
地化 468
22.1.3Storyboard的本地化 471
22.1.4图*素材的本地化 474
22.2小结 477
23章 加密与安全 478
23.1加密与安全 479
23.1.1对称加密和非对称加密 479
23.1.23DES加密 480
23.1.3SHA1加密 485
23.1.4MD5加密 487
23.1.5越狱情况的判断 490
23.2小结 492
24章 开源框架CocoaPods493
24.1CocoaPods、SPM和Carthage简介 494
24.1.1为什么使用CocoaPods 494
24.1.2CocoaPods的安装及的
镜像使用 495
24.1.3Podspec的镜像使用 496
24.1.4CocoaPods的实践 497
24.1.5pod install 和 pod upd*e 的
使用 497
24.1.6CocoaPods 的卸载 498
24.2CocoaPods-app的使用 498
24.2.1为新项目加入CocoaPods 499
24.2.2对Podfile的pod install和pod upd*e 500
24.2.3删除工程中的CocoaPods 501
24.2.4安装命令行 502
24.3小结 502
25章 Git版本控制及GitHub社会化
编程实践 503
25.1Git前奏曲 504
25.1.1什么是版本控制 504
25.1.2版本控制简史 504
25.1.3Git原理 506
25.1.4Git的安装、配置、别名和
帮助 508
25.2Git基础曲 510
25.2.1创建本地仓库和关联远程
仓库 510
25.2.2文件在工作区、暂存区和
Git本地仓库中的作 513
25.2.3查看提交历史 515
25.2.4撤销作 515
25.2.5标签 516
25.3小结 519
26章 项目案例的架构搭建 520
26.1多人协作的工作流程 521
26.2技*选型 522
26.3MVC及工程结构 523
26.4UITabbarController、UINavig*ionController和Assets.xcassets的搭建 525
26.4.1UITabbarController和UINavig*ionController 525
26.4.2Assets.xcassets管理 527
26.5小结 529
27章 Model层相关框架 530
27.1XML、Plist、JSON数据格式 531
27.2开启ATS 532
27.3AlamofireOb*e*Mapper 533
27.3.1AlamofireOb*e*Mapper的
安装 533
27.3.2AlamofireOb*e*Mapper的
使用 533
27.4Ob*e*Mapper 535
27.4.1Ob*e*Mapper的安装 535
27.4.2Ob*e*Mapper中Model与
JSON的转换 536
27.5Moya 536
27.5.1Moya的安装 537
27.5.2Moya的使用 537
27.6小结 540
28章 与众平台联姻 541
28.1ShareSDK 联合登录 542
28.1.1获取AppKey 542
28.1.2下载SDK 542
28.1.3快速集成 542
28.1.4新建Header File并建立
桥接 543
28.1.5打开桥接文件(Bridging-Header.h) 544
28.1.6添加URL Types 546
28.1.7查看open.*.*应用的
审核进度 546
28.2ShareSDK分享 548
28.2.1增加*平台分享支持 548
28.2.2增加微信平台分享支持 548
28.2.3*和微信平台分享的代码
实现 549
28.3聚合数据和LeanCloud 550
28.3.1聚合数据 550
28.3.2LeanCloud 551
28.4TalkingD*a统计 551
28.5小结 554
29章 开发SwiftNews新闻客户端
App 555
29.1SwiftNews App概述 556
29.1.1修改App Name 556
29.1.2修改App ICON 557
29.1.3欢迎页面 558
29.1.4启动页面 559
29.1.5Debug模式下的print 561
29.1.6桥联SVProgressHUD 562
29.1.7自定义Cell 563
29.1.8*和国际新闻模块 564
29.1.9图*加圆角和助手类 567
29.2小结 569
30章 应用程序的打包和发布570
30.1iOS应用商店概述 571
30.1.1App Store的重大更新 571
30.1.2在iTunes Conne*创建一个
App 573
30.1.3打包App为IPA文件 576
30.1.4自动化打包App 577
30.1.5上传App至App Store 580
30.1.6配置构建版本并提交审核 580
30.2小结 582
作者介绍
文摘
序言