图书目录

第1部分 

Objective-C语言基础 

第 1 章 

环境搭建

1.1 Xcode 简介 3 

1.2 创建 App 应用 3 

1.2.1 下载安装 Xcode 3 

1.2.2 使用 Xcode 创建 App .4 

1.2.3 Xcode 开发界面介绍 5 

1.3 程序调试 .6 

1.3.1 App 运行状态监控 6 

1.3.2 UI 界面分析 6 

1.3.3 断点调试 .7 

1.4 Xcode 常用快捷键 8 

1.5 常用插件 .9 

1.5.1 苹果封锁第三方插件的原因 .9 

1.5.2 源码编辑器扩展 .9 

1.6 快捷代码段 .10 

1.6.1 如何创建代码段 .10 

1.6.2 常用代码段 .11 

第 2 章 

数据类型与表达式

13 

2.1 数据类型与常量 .13 

2.1.1 基本数据类型 .13 

2.1.2 限定词 .15 

2.1.3 id 与 instancetype 17 

2.2 算术表达式 .18 

2.2.1 基本运算符 .18 

2.2.2 数据类型转换 .20 

2.3 循环结构 .22 

2.3.1 for 循环 22 

2.3.2 for-in 循环 .24 

2.3.3 while 循环 .26 

目 录 

iOS开发:从零基础到精通 

2.3.4 break 与 continue 28 

2.4 选择结构 .29 

2.4.1 if 语句 29 

2.4.2 switch 语句 32 

2.4.3 条件运算符 / 三目运算符 .35 

2.5 typedef 语句 36 

第 3 章 

类、对象与方法

 38 

3.1 类 .38 

3.1.1 类的定义 .38 

3.1.2 类的继承 .40 

3.2 属性 .42 

3.2.1 属性的定义 .42 

3.2.2 公有属性与私有属性 44 

3.2.3 属性关键字 .45 

3.3 方法 .48 

3.3.1 方法的定义 .48 

3.3.2 方法的调用 .49 

3.3.3 方法的重写 .52 

3.4 对象 .54 

3.4.1 创建对象 .54 

3.4.2 对象操作 .57 

3.5 变量 .60 

3.5.1 局部变量 .60 

3.5.2 全局变量 .61 

3.5.3 静态变量 .64 

3.5.4 const 关键字 .66 

第 4 章 

Foundation 框架

. 69 

4.1 Foundation 框架简介 .69 

4.2 字符串类 .69 

4.2.1 不可变字符串 NSString 69 

4.2.2 可变字符串 NSMutableString .74 

4.3 数组类 .76 

4.3.1 不可变数组 NSArray .76 

4.3.2 可变数组 NSMutableArray .79 

4.4 字典类 .81 

4.4.1 不可变字典 NSDictionary .81 

4.4.2 可变字典 NSMutableDictionary 84 

4.5 NSNumber 类 86 

目录 

4.6 NSDate 类 .88 

4.7 NSFileManager 类 92 

4.7.1 文件操作 .92 

4.7.2 目录操作 .96 

4.7.3 枚举目录中的内容 98 

4.7.4 文件的读取与写入 100 

4.8 NSURL 类 .102 

4.9 NSBundle 类 .103 

第 5 章 

Objective-C 语言特性

. 107 

5.1 代码块 .107 

5.1.1 Block 简介 .107 

5.1.2 Block 的参数与返回值 109 

5.1.3 操作 Block 外部的变量 . 112 

5.1.4 Block 回调 . 114 

5.2 分类 . 116 

5.3 协议 . 118 

5.3.1 协议简介 . 118 

5.3.2 代理 . 119 

5.4 KVC .120 

5.4.1 使用 KVC 赋值取值 120 

5.4.2 字典转模型 122 

5.4.3 修改 readonly 的属性以及私有属性 123 

5.5 KVO 125 

第 6 章 

Objective-C 进阶

 128 

6.1 对象复制 .128 

6.1.1 浅复制与深复制 128 

6.1.2 可变对象复制与不可变对象复制 129 

6.1.3 自定义对象复制 135 

6.2 内存管理 .137 

6.3 预编译指令 .139 

6.3.1 宏定义 .139 

6.3.2 #include、#import 与 @class 142 

6.3.3 条件编译 .143 

6.4 NSLog() 函数 145 

6.4.1 NSLog() 函数基本使用 .145 

6.4.2 定制输入日志的格式 146 

6.5 结构 .148 

6.5.1 结构的定义与基本使用 148 

iOS开发:从零基础到精通 

6.5.2 结构的嵌套 150 

第2部分 

iOS开发基础 

第 7 章 

基础 UI 控件

. 155 

7.1 UIKit 框架 .155 

7.2 视图 UIView .156 

7.2.1 UIView 简介 .156 

7.2.2 视图 UIView 的外观 159 

7.2.3 视图 UIView 的形变 162 

7.2.4 视图 UIView 的层次关系 163 

7.2.5 视图 UIView 的动画 166 

7.2.6 响应用户交互事件 167 

7.2.7 内容模式 contentMode 170 

7.2.8 图片拉伸 .172 

7.2.9 使用代码创建自定义 UIView .175 

7.2.10 使用 XIB 创建自定义 UIView 177 

7.2.11 控件改变坐标系(convertRect:) 180 

7.3 图片控件 UIImageView 181 

7.3.1 基本使用 .181 

7.3.2 常用操作 .183 

7.3.3 帧动画功能 185 

7.4 按钮控件 UIButton .186 

7.4.1 基本使用 .186 

7.4.2 按钮的创建 188 

7.4.3 调整图标与标题的位置 190 

7.5 文本控件 UILabel .192 

7.5.1 UILabel 简介 192 

7.5.2 常用的 UILabel 使用场景 .194 

7.6 提示框控件 .195 

7.7 文本输入框 UITextField 198 

7.7.1 UITextField 的基本属性 198 

7.7.2 UITextField 的代理方法简介 201 

7.7.3 UITextField 的代理方法实例之键盘回收 203 

7.7.4 UITextField 的代理方法实例之字数限制 205 

第 8 章 

高级 UI 控件

. 207 

8.1 滚动视图 UIScrollView .207 

8.1.1 UIScrollView 基本使用 .207 

8.1.2 UIScrollView 常用代理方法的实现 .209 

目录 

8.1.3 视图的缩放功能 212 

8.2 表视图 UITableView 214 

8.2.1 UITableView 基本介绍 214 

8.2.2 UITableView 的数据源方法 217 

8.2.3 了解单元格 UITableViewCell .219 

8.2.4 UITableView 创建示例 220 

8.2.5 UITableView 代理方法之点击单元格 222 

8.2.6 UITableView 代理方法之编辑单元格 224 

8.2.7 UITableViewCell 性能优化 .227 

8.2.8 分段 Section .228 

8.2.9 分段 Section 实现示例 231 

8.2.10 自定义 Cell .235 

8.2.11 Cell 高度的设置 .238 

8.2.12 动态调整 Cell 高度(self-sizing) .238 

8.2.13 动态调整 Cell 高度(代码) 

240 

8.2.14 UITableView+FDTemplateLayoutCell 计算 Cell 高度 .244 

8.2.15 改变 Cell 位置 247 

8.2.16 UITableView 的 Header 和 Footer .247 

8.2.17 去除多余的单元格分割线 248 

8.3 集合视图 UICollectionView 249 

8.3.1 UICollectionView 简介 249 

8.3.2 UICollectionView 数据源协议 DataSource 252 

8.3.3 最简单的集合视图实现 253 

8.3.4 UICollectionView 代理协议方法简介 255 

8.3.5 UICollectionView 代理方法实例 256 

8.3.6 UICollectionViewFlowLayout 简介 257 

8.3.7 UICollectionViewFlowLayout 使用实例 259 

8.3.8 UICollectionViewDelegateFlowLayout 类的代理方法实现 262 

8.3.9 自定义 Cell .265 

8.4 手势 UIGestureRecognizer 267 

8.4.1 UIGestureRecognizer 简介 267 

8.4.2 点击手势 UITapGestureRecognizer 269 

8.4.3 捏合与旋转手势 UIPinchGestureRecognizer .270 

8.4.4 滑动手势 UISwipeGestureRecognizer 273 

8.4.5 拖动手势 UIPanGestureRecognizer 275 

8.4.6 长按手势 UILongPressGestureRecognizer276 

第 9 章 

控制器

 278 

9.1 控制器 UIViewController 278 

9.1.1 控制器简介以及创建控制器 278 

iOS开发:从零基础到精通 

10 

9.1.2 使用 XIB 以及 Storyboard 创建控制器 279 

9.1.3 控制器的生命周期 283 

9.1.4 使用 Storyboard 切换控制器 285 

9.1.5 使用代码切换控制器 287 

9.1.6 控制器嵌套 288 

9.2 导航控制器 UINavigationController .291 

9.2.1 导航控制器简介 291 

9.2.2 控制器跳转 295 

9.2.3 子控制器的管理 295 

9.2.4 UINavigationBar 296 

9.2.5 barStyle 属性 297 

9.2.6 barTintColor 与 tintColor .298 

9.2.7 导航栏设置背景图片 299 

9.2.8 UINavigationItem .300 

9.2.9 UINavigationItem 定制示例 302 

9.2.10 UINavigationItem 显示原始图片样式 304 

9.2.11 UINavigationController 的代理方法 .304 

9.2.12 顺传数据 .305 

9.2.13 使用代理逆传数据 307 

9.2.14 使用通知逆传数据 309 

9.2.15 使 Block 逆传数据 .310 

9.2.16 工具栏 toolBar . 311 

9.3 UITabBarController .313 

9.3.1 UITabBarController 的常用属性和方法 .313 

9.3.2 UITabBar 的常用属性和方法 .314 

9.3.3 UITabBarItem 的常用属性和方法 315 

9.3.4 微信 TabBar 实现 .316 

9.3.5 UITabBarController 的代理协议 .318 

9.4 UIWindow、UIView 与 UIViewController 关系 .319 

9.4.1 概念简介 .319 

9.4.2 关系描述 .320 

第 10 章 

其他 UI 控件

. 322 

10.1 WKWebView .322 

10.1.1 WKWebView 简介 .322 

10.1.2 WKWebView 的基本使用——加载网页 .324 

10.1.3 网页浏览控制 325 

10.1.4 加载本地文件 328 

10.1.5 WKWebView 代理协议之 WKNavigationDelegate .330 

10.2 UITextView .330 

11 

目录 

10.2.1 UITextView 的基本使用 330 

10.2.2 UITextView 的代理方法 332 

10.3 UIPageControl .333 

10.3.1 UIPageControl 介绍 .333 

10.3.2 UIPageControl 实际应用 .334 

10.4 UIPickerView 338 

10.4.1 UIPickerView 简介 338 

10.4.2 UIPickerView 的基本使用 340 

10.4.3 相互依赖的多列选择器 342 

10.5 UISilder .345 

10.5.1 UISlider 基本介绍 .345 

10.5.2 UISlider 实例 .347 

10.6 UIDatePicker .349 

10.6.1 UIDatePicker 基本介绍 .349 

10.6.2 UIDatePicker 基本使用 .349 

10.7 UISegmentedControl 351 

10.7.1 UISegmentedControl 简介 .351 

10.7.2 UISegmentedControl 实例 .352 

第3部分 

iOS开发进阶 

第 11 章 

多线程

 359 

11.1 线程基础知识 .359 

11.2 GCD .362 

11.2.1 GCD 基本概念介绍 .362 

11.2.2 队列与任务组合 363 

11.2.3 线程间通信 369 

11.2.4 队列组 dispatch group 371 

11.2.5 延迟执行操作 373 

11.3 NSOperation 374 

11.3.1 NSOperation 基本使用 374 

11.3.2 线程间通信 379 

11.3.3 任务间的执行依赖 380 

第 12 章 

网络

. 382 

12.1 网络开发基本概念介绍 382 

12.2 常用网络协议之 HTTP .383 

12.3 网络请求之 GET、POST 请求 384 

12.4 AFNetworking 框架介绍 .385 

12.5 聚合数据 API 简介 387 

iOS开发:从零基础到精通 

12 

12.6 GET 请求与 POST 请求使用示例 .389 

12.7 JSON 和 XML 简单介绍 .391 

第 13 章 

数据持久化

. 394 

13.1 沙盒 .394 

13.1.1 沙盒基础 .394 

13.1.2 在 Mac 上查看沙盒目录 .396 

13.2 Plist 文件 .397 

13.2.1 Plist 简介 .397 

13.2.2 Plist 文件的读取 399 

13.2.3 Plist 文件的写入 400 

13.2.4 操作实例 .402 

13.3 偏好设置 NSUserDefaults .406 

13.3.1 NSUserDefaults 简介 .406 

13.3.2 读写示例 .407 

13.4 归档 .409 

13.4.1 基本使用 .409 

13.4.2 单个对象归档 / 解档 .410 

13.4.3 自定义对象归档 / 解档 .412 

13.4.4 归档多个自定义对象 416 

13.4.5 子类对象的归档 419 

13.4.6 归档多个不同类型的对象 422 

13.5 SQLite .424 

13.5.1 数据库的操作 424 

13.5.2 表的操作 .427 

13.5.3 数据记录的操作 430 

13.6 FMDB 433 

13.6.1 基本介绍 .433 

13.6.2 更新操作与查询操作 436 

13.6.3 线程安全 .438 

13.7 Core Data .439 

13.7.1 概念简介 .439 

13.7.2 使用示例 .440 

13.8 Realm .445 

13.8.1 Realm 基本介绍 .445 

13.8.2 Realm 的安装 .449 

13.8.3 常用属性与方法 451 

13.8.4 Realm 使用示例 .453 

13 

目录 

第 14 章 

绘图和动画

. 457 

14.1 核心绘画 .457 

14.1.1 核心绘画的基本概念 457 

14.1.2 贝塞尔路径 458 

14.1.3 绘图方法和步骤 460 

14.1.4 常见图形的绘制方法 461 

14.2 UIImage 绘图应用 .464 

14.2.1 绘制图片 .464 

14.2.2 添加水印 .467 

14.2.3 裁剪圆形图片 470 

14.2.4 截屏 .473 

14.3 CALayer 474 

14.3.1 CALayer 简介 474 

14.3.2 iOS 开发中的坐标系 .477 

14.3.3 动画属性 .481 

14.4 核心动画 .482 

14.4.1 核心动画简介 482 

14.4.2 动画的实现步骤 484 

14.4.3 CAPropertyAnimiation 属性动画 485 

14.4.4 CABasicAnimiation 基本动画 .486 

14.4.5 CAKeyframeAnimation 关键帧动画 .487 

14.4.6 CASpringAnimation 弹簧动画 489 

14.4.7 CAAnimationGroup 动画组 490 

14.4.8 CATransition 转场动画 492 

第 15 章 

设计模式

 495 

15.1 iOS 下的 MVC 设计模式 495 

15.2 单例模式 .497 

15.3 iOS 下的 MVVM 设计模式 499 

第 16 章 

自动布局

 502 

16.1 自动布局简介 .502 

16.2 Masonry .505 

第 17 章 

设备调用

 511 

17.1 UIDevice 类  511 

17.1.1 获取设备基本信息  511 

17.1.2 获取电池信息 512 

17.1.3 接近传感器 514 

iOS开发:从零基础到精通 

14 

17.1.4 方向传感器 515 

17.2 位置应用 .517 

17.2.1 CoreLocation 框架简介 .517 

17.2.2 CoreLocation 框架的基本使用 .519 

17.2.3 地理信息编码简介 522 

17.2.4 CLGeocoder 应用案例 1 523 

17.2.5 CLGeocoder 应用案例 2 526 

17.3 地图应用 .528 

17.3.1 MKMapView 简介 .528 

17.3.2 MKMapView 的基本使用 .530 

17.3.3 简易地图标注 531 

17.3.4 简易地图标注示例 533 

17.3.5 复杂地图标注 534 

17.3.6 复杂地图标注示例 535 

17.4 相机与相册 .537 

17.4.1 UIImagePickerController 简介 537 

17.4.2 UIImagePickerController 的使用 538 

17.5 CoreMotion 框架 540 

17.5.1 CoreMotion 基本介绍 540 

17.5.2 获取运动传感器的裸数据 543 

17.5.3 CMDeviceMotion .546 

17.6 系统应用调用 .548 

17.6.1 拨打电话功能 548 

17.6.2 发送短信功能 550 

17.6.3 发送邮件功能 552 

第 18 章 

证书管理与应用发布

 555 

18.1 证书管理 .555 

18.1.1 iOS 开发证书(调试证书)管理 .555 

18.1.2 iOS 发布证书创建详解 .565 

18.2 推送证书管理 .574 

18.2.1 推送调试证书 574 

18.2.2 推送生产证书 577 

18.3 App Store 应用发布 .581 

18.3.1 App Store 应用发布详解 .581 

18.3.2 App 被拒绝上架的原因解析 .590 

第 19 章 

消息推送

 593 

19.1 远程消息推送 .593 

19.1.1 极光(JPush)消息推送集成 .593 

15 

目录 

19.1.2 获取推送消息内容 596 

19.1.3 打开指定界面(自定义消息内容) 597 

19.1.4 管理 App 的 Badge(本地方式) 599 

19.1.5 管理 App 的 Badge(远程服务器方式) 600 

19.1.6 更改推送消息提示音 602 

19.2 本地消息推送(基于 iOS10 UserNotifications 框架) 

604 

19.2.1 UNNotificationRequest 类 .604 

19.2.2 UNNotificationContent 类 605 

19.2.3 UNNotificationTrigger 类.607 

19.2.4 UNUserNotificationCenterDelegate 代理协议 609 

19.2.5 示例代码 .610 

第 20 章 

其他高级知识点

 613 

20.1 App 的生命周期 .613 

20.2 使用 AVFoundation 框架实现扫描二维码 .618 

第4部分 

常用第三方框架与工具 

第 21 章 

常用第三方框架介绍

 623 

21.1 CocoaPods .623 

21.1.1 CocoaPods 的安装 .623 

21.1.2 使用 CocoaPods 安装 SDK .626 

21.2 高德地图 .629 

21.2.1 高德地图简介 629 

21.2.2 高德地图 SDK 的安装 630 

21.2.3 地图 SDK 简介 632 

21.2.4 绘制地图标注 634 

21.2.5 定位 SDK .636 

21.3 SDWebImage .637 

21.4 免费短信验证码 .639 

21.5 MBProgressHUD 643 

21.5.1 MBProgressHUD 简介 .643 

21.5.2 MBProgressHUD 基本使用 .645 

21.6 YYModel .649 

21.6.1 YYModel 简介 .649 

21.6.2 YYModel 使用案例 .650 

第 22 章 

常用开发工具介绍

 652 

22.1 Reveal——AppUI 界面分析 .652 

iOS开发:从零基础到精通 

16 

22.1.1 Reveal 使用简介 652 

22.1.2 分析任意 iOS 应用的 UI 界面 655 

22.2 Charles——网络抓包工具 657 

22.2.1 抓取 HTTP 请求(基础) 657 

22.2.2 抓取 HTTPS 请求(高级) 659 

22.3 GitHub .664 

22.3.1 GitHub 简介 .664 

22.3.2 GitHub Desktop 桌面工具的安装 .664 

22.3.3 创建仓库 .667 

22.3.4 版本控制 .670 

22.3.5 分支 branch 操作 .676 

22.3.6 冲突处理 .678 

22.3.7 团队合作 .681 

第5部分 

Swift语言基础 

第 23 章 

Swift 语言基础

 689 

23.1 Swift 简介 .689 

23.2 常量和变量 .691 

23.3 基本运算符 .693 

23.4 字符串和字符 .694 

23.5 集合类型 .700 

23.6 流程控制 .707 

23.6.1 循环语句 .707 

23.6.2 条件语句 .710 

23.6.3 控制转移语句 712 

23.7 函数基础 .715 

23.8 函数类型 .718 

23.9 闭包 .720 

23.10 枚举 .724 

23.11 类和结构体 .728 

23.12 属性 .731 

23.13 方法 .735 

23.14 下标 .738 

23.15 继承 .740 

23.16 初始化 .743 

23.17 析构 .749 

23.18 扩展 .751 

23.19 协议 .757 

23.20 泛型 .760 

17 

目录 

23.21 可选链 .763 

第6部分 

React Native基础 

第 24 章 

React Native 基础

. 771 

24.1 搭建 React Native 开发环境 .771 

24.2 编写 Hello World 776 

24.3 属性 Props .778 

24.4 状态 State 780 

24.5 样式 style 781 

24.6 界面布局 .784 

24.7 网络 .788 

24.8 Text 组件 .791 

24.9 Image 组件 794 

24.10 Button 组件 .796 

24.11 TouchableHighlight 组件 .799 

24.12 TextInput 组件 .802 

24.13 KeyboardAvoidingView 组件 805 

24.14 ScrollView 组件 808 

24.15 ListView 组件 . 811 

24.16 Navigator 组件 815 

24.17 TabBarIOS 组件 820 

参考文献

 824