《IOS移动开发从入门到精通》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:李发展,王亮编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2017
  • ISBN:9787302462026
  • 页数:582 页
图书介绍:本书循序渐进地讲解了iOS 10+Xcode 8+Swift3开发应用程序的必备知识和APP实战案例,以及发布APP应用程序的全过程。通过本书的学习,读者能够熟练掌握iOS开发原理、架构,进行iOS应用程序开发的整个流程。

第1章 开发准备 1

1.1 iOS移动开发现状 2

1.1.1 iOS的历史 2

1.1.2 iOS 10的十大变化 4

1.1.3 iOS应用开发的八个特点 5

1.2 iOS 10的新功能 5

1.2.1 SiriKit 6

1.2.2 Proactive Suggestions(预建议) 6

1.2.3 Integrating with the MessagesApp 7

1.2.4 User Notifications 7

1.2.5 Speech Recognition 8

1.2.6 Wide Color 9

1.2.7 Adapting to the True ToneDisplay 9

1.2.8 Widget Enhancements 9

1.2.9 Securi 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.5 iOS应用的生命周期 23

1.5.1 iOS应用程序的状态 24

1.5.2演示iOS应用程序的各种状态 25

1.6小结 26

第2章Xcode 8 IDE和iOS模拟器 27

2.1 Xcode 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.2 iOS模拟器的使用 39

2.2.1使用多种iOS模拟器 39

2.2.2 iOS模拟器方向的切换 40

2.2.3 iOS模拟器语言的切换 40

2.2.4截取模拟器屏幕 41

2.2.5应用程序的退出和删除 41

2.3小结 42

第3章Swift 3.0的基础知识 43

3.1 Swift的基本概念 44

3.1.1 Swift语言的特点 44

3.1.2 Swift常量和变量的定义 45

3.1.3常量和变量的输出 46

3.1.4注释 47

3.1.5 Playground 47

3.2数据类型与运算 49

3.2.1布尔类型 49

3.2.2 Int类型及实例属性 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.1 for循环 57

3.3.2 while循环语句 58

3.3.3 repeat-while循环语句 59

3.3.4 if条件判断语句 60

3.3.5 switch条件判断语句 60

3.3.6 continue语句和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类的延迟加载属性lazy 93

4.3.8类的引用特征 95

4.3.9类型检查 95

4.3.10 Any和Anyobject 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.1 UIView概述 107

5.1.2 UIView的外观属性 109

5.1.3 UIView的几何属性 112

5.1.4 UIView的嵌套和层次关系 114

5.1.5 UIView的交互属性 116

5.1.6 UIView的变形操作 118

5.1.7自定义UIView视图 120

5.2 CALayer层 124

5.2.1 CALayer边框 124

5.2.2 CALayer阴影 125

5.2.3 CALayer圆角 126

5.2.4 CALayer渐变 127

5.3小结 129

第6章 视图控制器U IViewController 130

6.1UIViewController视图控制器概述 131

6.1.1视图控制器与MV C 131

6.1.2创建一个视图控制器 132

6.1.3以模态方式弹出视图控制器 136

6.1.4视图控制器的生命周期 139

6.1.5视图控制器和UIScrollView 141

6.2 UITabBarController 145

6.2.1创建一个UITabBarController 145

6.2.2改变Tab bar的位置 147

6.2.3改变UITabBarController索引 149

6.2.4在Tab图标上显示角标 149

6.3 UINavigationController 150

6.3.1创建一个UINavigationController 151

6.3.2 UINavigationController视图入栈和出栈 153

6.3.3导航栏和工具栏的显示和隐藏 157

6.3.4导航栏样式的修改 157

6.4导航控制器和标签控制器 158

6.5小结 161

第7章 常用经典控件 162

7.1控件概述 163

7.1.1何为Target-Action机制 163

7.1.2 UIControl类的方法和属性 165

7.1.3让我们一起动手来实现一个UIControl吧 167

7.2 UIButton的概述 168

7.3 UILabel文本视图 171

7.3.1 UILabel的创建和文案显示 172

7.3.2 UILabel处理过长的文案 173

7.3.3 UILabel的阴影 174

7.4 UISwitch开关视图 175

7.4.1 UISwitch的创建 175

7.4.2 UISwitch的开关使用 176

7.5 UIRefreshControl刷新控件 176

7.6 UITextField文本框控件 178

7.6.1 UITextField的创建和基本应用 179

7.6.2 UITextField的背景图 180

7.6.3 UITextField的浮动视图(Overlay view) 181

7.6.4 UITextField的代理UITextFieldDelegate 183

7.7小结 185

第8章UITableView和UICollectionView 186

8.1 UITableView概述 187

8.1.1 UITableViewCell单元格 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.2 UICollectionView概述 219

8.2.1 UICollectionView的实现原理 220

8.2.2创建一个UICollectionView对象并添加点击事件 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.3 3D Touch的使用 239

9.4小结 242

第10章 动画、声音与视频 243

10.1制作动画 244

10.1.1 UIView的动画 244

10.1.2使用UIImageView播放帧动画 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

第11章Alamofire网络请求框架 266

11.1Alamofire的前世今生 267

11.1.1 Alamofire的手动集成 267

11.1.2 Alamofire的网络是否联通和连接方式 269

11.1.3 Alamofire的GET和POST请求 272

11.1.4 Alamofire的文件上传及进度显示 274

11.1.5 Alamofire的文件下载及进度显示 278

11.2小结 279

第12章U IWebView与HTML 5技术 280

12.1 UIWebView的使用 281

12.1.1使用UIWebView加载网页 281

12.1.2使用UIWebView加载HTML字符串和GIF动画 283

12.1.3使用UIWebView加载本地网页 286

12.1.4使用Javascript回调原生程序 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

第13章 数据的持久化 299

13.1解析plist文件 300

13.1.1创建和解析plist文件 300

13.1.2将信息写入plist文件 303

13.2使用CoreData进行数据的持久化 304

13.2.1创建Core Data实体并插入数据 306

13.2.2检索Core Data中的数据 308

13.2.3修改和删除Core Data数据 310

13.3小结 312

第14章 多线程技术 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.3 Operation技术的使用 322

14.4 Grand Central Dispatch的使用 325

14.4.1使用GCD查询IP地址信息 326

14.4.2 DispatchGroup调度组的使用 328

14.5小结 329

第15章MapKit地图 330

15.1 Map Kit的概念 331

15.1.1 MKMapView的显示区域 331

15.1.2 MKMapView的跟踪和定位 332

15.1.3 MKMapView的交互选项和装饰物 333

15.1.4创建一个MKMapView地图 333

15.1.5 MKMapView代理的使用 335

15.1.6自定义annotationView和calloutV iew 337

15.1.7 Camera相机的使用 341

15.2小结 342

第16章iOS的图文混排技术 343

16.1 Core Text的使用 344

16.1.1文字排版方面的一些基本概念 344

16.1.2列出设备中的所有字体 346

16.1.3富文本的创建 347

16.1.4图文混排的实现 350

16.2 Text Kit的使用 354

16.2.1使用Text Kit对文字进行分栏 354

16.2.2使用Text Kit制作图文混排效果 357

16.3小结 359

第17章iOS的图像和视频处理技术 360

17.1 Core Image概述 361

17.1.1使用Core Image的三个类制作单色调效果 362

17.1.2使用Core Image给图片添加马赛克 363

17.1.3使用Core Image处理视频画面 364

17.1.4输出Core Image的所有滤镜 369

17.1.5使用CIDetector和CIFeature进行人脸检测 370

17.2 UIBlurEffect和CGB1endMode 372

17.2.1使用UIBlurEffect实现毛玻璃效果 372

17.2.2使用CGB1endMode实现颜色混合效果 373

17.3小结 376

第18章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

第19章Storyboard故事板的使用 394

19.1Storyboard概述 395

19.1.1 Storyboard的优缺点 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添加Collection View 409

19.4.2设置Collection View Cell 409

19.4.3设置Collection View的数据源和代理 411

19.4.4修改ViewController.swift文件 412

19.5 Storyboard常见的层次结构 413

19.6 Storyboard之间的页面跳转和参数传递 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.1 Xocde的XCTest框架 435

20.1.2对其他类的方法进行单元测试 438

20.1.3使用XCTest框架进行性能测试 441

20.2 UI 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使用UIAutomation进行自动化测试 447

20.3.1使用UIAutomation录制自动化测试代码 447

20.3.2测试脚本的保存和加载 449

20.4小结 449

第21章iOS应用程序内存泄露的检测 451

21.1Allocations工具的使用 452

21.2 Leaks工具的使用 458

21.3小结 461

第22章iOS应用程序的本地化 462

22.1应用程序的本地化 463

22.1.1应用程序名称的本地化 463

22.1.2应用程序文字内容的本地化 468

22.1.3 Storyboard的本地化 471

22.1.4图片素材的本地化 474

22.2小结 477

第23章 加密与安全 478

23.1加密与安全 479

23.1.1对称加密和非对称加密 479

23.1.2 3DES加密 480

23.1.3 SHA1加密 485

23.1.4 MD5加密 487

23.1.5越狱情况的判断 490

23.2小结 492

第24章 开源框架CocoaPods 493

24.1CocoaPods、 SPM和Carthage简介 494

24.1.1为什么使用CocoaPods 494

24.1.2 CocoaPods的安装及淘宝的镜像使用 495

24.1.3 Podspec的镜像使用 496

24.1.4 CocoaPods的实践 497

24.1.5 pod install和pod update的使用 497

24.1.6 CocoaPods的卸载 498

24.2 CocoaPods-app的使用 498

24.2.1为新项目加入CocoaPods 499

24.2.2对Podfile的pod install和pod update 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.3 Git原理 506

25.1.4 Git的安装、配置、别名和帮助 508

25.2 Git基础曲 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.3 MVC及工程结构 523

26.4 UITabbarController、 UINavigationContller 和Assets.xcassets的搭建 525

26.4.1 UITabbarController和 UINavigationController 525

26.4.2 Assets.xcassets管理 527

26.5小结 529

第27章Model层相关框架 530

27.1 XML、 Plist、 JSON数据格式 531

27.2开启ATS 532

27.3 AlamofireObjectMapper 533

27.3.1 AlamofireObjectMapper的安装 533

27.3.2 AlamofireObjectMapper的使用 533

27.4 ObjectMapper 535

27.4.1 ObjectMapper的安装 535

27.4.2 ObjectMapper中Model与JSON的转换 536

27.5 Moya 536

27.5.1 Moya的安装 537

27.5.2 Moya的使用 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.qq.com应用的审核进度 546

28.2 ShareSDK分享 548

28.2.1增加QQ平台分享支持 548

28.2.2增加微信平台分享支持 548

28.2.3 QQ和微信平台分享的代码实现 549

28.3聚合数据和LeanCloud 550

28.3.1聚合数据 550

28.3.2 LeanCloud 551

28.4 TalkingData统计 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.5 Debug模式下的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.1 iOS应用商店概述 571

30.1.1 App Store的重大更新 571

30.1.2在iTunes Connect创建一个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