网站颜色:

iOS移动开发从入门到精通 iOS 10+Swift 3+Xcode 8开发移动应用关键技术书籍 iOS 10应用开发教程书籍 Swift 3.0语言书籍.

  • 产品名称:iOS移动开发从入门到精通...
  • 是否是套装:否
  • 书名:iOS移动开发从入门到精通清华社
  • 定价:99.00元
  • 出版社名称:清华大学出版社
  • 作者:无
  • 书名:iOS移动开发从入门到精通清华社

产品名称:iOS移动

ISBN: (咨询特价)

书名: iOS移动

作者:李发展 王亮  

出版社:清华大学出版社

出版时间: 2017.3

定价: 99.(咨询特价)

是否是套装: 否

本书由iOS开发工程师编撰,系统地介绍了使用iOS 10+Swift 3+Xcode 8开发移动应用的技术。

本书共分三篇,第一篇为基础篇,主要介绍了iOS开发基础知识,包括iOS系统的历史、Swift 3.0语言、UI界面构建技术、视图控制器、常用的控件、表和集合视图、视图和层、声音、视频、动画等。第二篇为进阶篇,主要介绍了Alamofire网络服务、数据的持久化、多线程、CoreText、CoreImage、Storyboard、自动化测试、性能分析、本地化、加密与安全等实用技术。第三篇为实例篇,通过对实体层、表现层和逻辑层三层相关技术的讲解,向读者详细展示了MVC设计模式在项目开发中的应用方尸并zui终创建一个商业项目。

本书采用实例代码展示,向读者讲解了在创建一款iOS应用程序时,所需要的大部分技巧,帮助读者掌握开发iOS程序。本书适合iOS开发新手、iOS程序员、iPhone开发人员、iPad开发人员使用,也可以作为相关培训机构和大专院校相关专业的教学用书。

第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 Messages

App 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 Tone

Display 9

1.2.8 Widget Enhancements 9

1.2.9 Security 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章 视图控制器UIViewController 130

6.1 UIViewController视图控制器概述 131

6.1.1 视图控制器与MVC 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.1 Alamofire的前世今生 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章 UIWebView与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和

calloutView 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和CGBlendMode 372

17.2.1 使用UIBlurEffect实现毛玻璃

效果 372

17.2.2 使用CGBlendMode实现颜色

混合效果 373

17.3 小结 376

第18章 iOS常用设备的使用 377

18.1 Photos和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.1 Storyboard概述 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.1 Allocations工具的使用 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.1 CocoaPods、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.1 Git前奏曲 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、UINavigationController和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.1 ShareSDK 联合登录 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.1 SwiftNews 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  

 

第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 Messages

App 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 Tone

Display 9

1.2.8 Widget Enhancements 9

1.2.9 Security 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章 视图控制器UIViewController 130

6.1 UIViewController视图控制器概述 131

6.1.1 视图控制器与MVC 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.1 Alamofire的前世今生 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章 UIWebView与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和

calloutView 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和CGBlendMode 372

17.2.1 使用UIBlurEffect实现毛玻璃

效果 372

17.2.2 使用CGBlendMode实现颜色

混合效果 373

17.3 小结 376

第18章 iOS常用设备的使用 377

18.1 Photos和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.1 Storyboard概述 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.1 Allocations工具的使用 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.1 CocoaPods、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.1 Git前奏曲 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、UINavigationController和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.1 ShareSDK 联合登录 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.1 SwiftNews 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

热门设计服务