第一部分 Swift语言编程指南
第1章 Swift初见
1.1 什么是Swift
1.2 为什么要学习Swift
1.3 Objective-C程序员学习Swift需要特别关注的地方
1.3.1 类型推断与类型安全
1.3.2 泛型
1.3.3 数组和字典
1.3.4 字符串
1.3.5 switch语句
1.4 关于Swift初学者的一些问题
1.4.1 从哪里获得Swift
1.4.2 是否需要先学Objective-C,再学Swift
1.4.3 "老鸟"们学习Swift是否会更轻松
1.4.4 开发iOS 8和OS X Yosemite程序只能用Swift吗
1.4.5 Swift是否能在当前的iOS和OS X版本上工作
1.4.6 什么是Playground
1.4.7 关于NDA
1.4.8 有Swift能做到而Objective-C法做到的吗?反过来说呢
1.4.9 某些API是否法被Swift调用
1.4.10 在Playground中,如何以图表方式查看变量值
1.4.11 如何打开REPL
1.4.12 Swift如何调用Objective-C代码或第三方库
1.4.13 Swift数组只能存储同一种类型的数据吗
1.4.14 字典是否也和数组一样是强类型的
1.4.15 Swift中有类似于Objective-C中的id吗
1.4.16 在 Swift中,如何自省
1.4.17 在Swift中如何使用GCD
1.4.18 Objective-C中提供的Internationalization宏是否仍然可用
1.4.19 仍然需要注意持有循环吗
1.4.20 何时使用strong、weak以及unowned
第2章 Swift语法基础
2.1 Playground
2.2 常量、变量、字符串
2.2.1 常量
2.2.2 变量
2.2.3 分号
2.2.4 字符串
2.2.5 字符串插值和运算
2.3 简单类型和类型推断
2.3.1 数值类型
2.3.2 类型转换
2.3.3 布尔类型
2.3.4 区间
2.3.5 元组
2.4 流程控制
2.4.1 for循环
2.4.2 while语句
2.4.3 if语句
2.4.4 switch语句
第3章 结构和类
3.1 可空类型
3.1.1 认识可空
3.1.2 声明可空
3.1.3 可空类型与非可空类型的转换
3.2 集合
3.2.1 数组
3.2.2 字典
3.3 枚举
3.3.1 定义枚举时填充原始值
3.3.2 使用其他类型
3.3.3 不填充原始值
3.3.4 联合
3.4 结构和类综述
3.4.1 属性
3.4.2 构造器
3.4.3 实例方法
3.4.4 类方法
3.4.5 下标方法
3.4.6 继承
第4章 Swift函数式编程
4.1 函数
4.1.1 函数的定义
4.1.2 外部参数名
4.1.3 简化外部参数名
4.1.4 默认值
4.1.5 可变参数
4.1.6 变量参数和输出参数
4.1.7 用函数作为参数
4.1.8 函数作为返回值
4.1.9 嵌套函数
4.2 闭包
4.2.1 声明闭包
4.2.2 匿名闭包
4.2.3 尾末闭包
4.2.4 值捕获
4.3 协议
4.3.1 协议的声明
4.3.2 实现协议
4.3.3 协议是一种类型
4.3.4 组合协议
4.4 扩展
4.4.1 声明扩展
4.4.2 扩展和协议
4.5 泛型
4.5.1 泛型函数
4.5.2 泛型和协议
4.5.3 泛型约束
4.5.4 泛型类型
4.6 可空链
4.6.1 ?操作符
4.6.2 ??操作符
第二部分 iOS 8 SDK
第5章 故事板与自适应布局
5.1 自适应布局入门
5.1.1 自适应布局的4个概念
5.1.2 Universal故事板
5.1.3 Size类
5.1.4 自适应字体
5.1.5 设备相关图片
5.2 自适应布局进阶
5.2.1 自适应单元格
5.2.2 自动安装视图
5.2.3 UITraitCollection类
5.2.4 覆盖Size类
5.2.5 Size相关图片
5.2.6 显示/隐藏导航栏
5.2.7 UIAppearance和Size类
第6章 UISplitViewController及旋屏
6.1 创建UISplitViewController应用
6.2 在iPhone App中使用UISplitViewController
6.2.1 创建Detail默认视图
6.2.2 在iPhone中展开UISplitViewController
6.2.3 记住用户选择
6.2.4 单元格指示器
6.2.5 对iPad进行适应
6.3 旋屏
6.3.1 旧的旋屏方法被废弃
6.3.2 自定义旋屏效果
6.3.3 单元格自适应大小
6.3.4 iPad旋屏
6.3.5 自适应的UILabel
第7章 视图控制器的呈现
7.1 初始项目
7.2 内置的Presentation Controller
7.2.1 UIAlertController
7.2.2 UIPopoverPresentationController
7.2.3 UISearchController
7.3 自定义UIPresentationController
7.3.1 Presented控制器和Presenting控制器
7.3.2 创建基本的PresentationController
7.3.3 自定义转换动画
7.3.4 高级定制
第8章 今日扩展
8.1 App扩展介绍
8.1.1 App扩展的类型
8.1.2 理解App扩展
8.2 今日扩展综述
8.2.1 介绍今日扩展
8.2.2 WeatherWidget示例
8.2.3 讨论
第9章 分享扩展
9.1 案例项目:SinaWeiboShare
9.1.1 实现容器App
9.1.2 创建分享扩展
9.2 讨论
9.2.1 配置SLComposeSheetConfigurationItem
9.2.2 分享其他文件
第10章 动作扩展
10.1 案例项目:SearchInICIBA
10.1.1 实现容器App
10.1.2 创建动作扩展
10.2 讨论
第11章 照片编辑扩展
11.1 案例项目:PhotoVintage
11.1.1 实现容器App
11.1.2 实现照片编辑扩展
11.2 讨论
第12章 文档提供者扩展
12.1 准备
12.1.1 工作机制
12.1.2 文档提供者扩展支持的4种操作
12.2 Bmob云服务
12.2.1 注册Bmob
12.2.2 创建应用
12.2.3 获取App Key
12.2.4 Bmob SDK
12.3 开始
12.3.1 添加扩展App
12.3.2 配置Info.plist和entitlements
12.4 加入Bmob SDK框架
12.4.1 添加CocoaPods框架
12.4.2 桥接头文件
12.4.3 上传图片到Bmob
12.4.4 实现Document Picker
12.4.5 实现宿主App
12.4.6 实现File Provider
12.5 讨论
第13章 键盘扩展
13.1 准备
13.2 键盘扩展的限制
13.3 值得信任
13.4 网络访问
13.5 开始
13.5.1 创建键盘扩展
13.5.2 显示键盘
13.5.3 设计按钮及布局
13.6 实现KeyboardViewController
13.6.1 创建连接
13.6.2 实现按键处理
13.6.3 大小写转换
13.6.4 切换符号集
13.6.5 按键动画
13.6.6 键盘最终运行效果
13.7 讨论
第14章 CloudKit
14.1 准备
14.1.1 用户授权
14.1.2 iCloud容器
14.1.3 数据库
14.1.4 Zone
14.1.5 记录
14.1.6 订阅
14.2 开始
14.2.1 打开iCloud
14.2.2 程序主界面
14.2.3 全局对象
14.2.4 获取用户ID及姓名
14.2.5 将数据封装为CKRecord
14.2.6 上传照片
14.2.7 查看已经上传的图片
14.3 高级API
14.3.1 不完全抓取
14.3.2 分页抓取
14.3.3 抓取并缓存图片
14.3.4 错误处理及网络重试
14.3.5 CloudKit Dashboard
14.4 讨论
第15章 Photos框架
15.1 Photos初步
15.1.1 模型对象
15.1.2 抓取概述
15.1.3 检索内容
15.1.4 初始项目
15.1.5 获取用户授权
15.1.6 抓取
15.1.7 显示图片
15.1.8 缓存
15.1.9 标记用户选择
15.2 Photos进阶
15.2.1 API介绍
15.2.2 初始项目
15.2.3 创建新的拼接图
15.2.4 显示拼接图
15.2.5 收藏和删除
15.2.6 增加修订记录
15.2.7 读取修订记录
15.2.8 注册变更通知
15.2.9 监听变更通知
15.2.10 让SpliceListVC处理变更通知
15.2.11 让PhotoPicker处理变更通知
15.3 讨论
第16章 Handoff
16.1 Handoff基础
16.2 开始
16.2.1 Handoff兼容性
16.2.2 测试Handoff
16.2.3 初始项目
16.2.4 设置Team ID
16.2.5 添加活动类型
16.3 view活动
16.3.1 创建活动并开始广播
16.3.2 更新用户活动
16.3.3 停止广播
16.4 edit活动
16.4.1 创建活动并开始广播
16.4.2 更新用户活动
16.4.3 停止广播
16.5 恢复用户活动
16.5.1 在应用程序委托中接收Handoff广播
16.5.2 恢复view活动
16.5.3 恢复edit活动
16.6 讨论
第17章 WebKit
17.1 开始
17.1.1 初始项目
17.1.2 创建WKWebView实例
17.1.3 加载Web页
17.1.4 监视页面加载进度
17.1.5 页面导航
17.1.6 WKNavigationDelegate协议
17.2 WebKit进阶
17.2.1 脚本调试工具
17.2.2 隐藏网页内容
17.2.3 抓取页面内容
17.2.4 显示PopoverController
17.3 讨论
第18章 Living Rendering
18.1 Living Rendering初步
18.1.1 开启Living Redering特性
18.1.2 暴露@IBInspectable属性
18.1.3 绘制boxLayer层
18.1.4 绘制markLayer层
18.1.5 绘制文本图层
18.2 Living Rendering进阶
18.2.1 使用位图
18.2.2 响应事件
18.3 讨论
第19章 Visual Effects
19.1 Visual Effects初步
19.1.1 初始项目
19.1.2 使用Visual Effect View实现模糊特效
19.1.3 使用Visual Effect View实现Vibrancy效果
19.2 Visual Effects进阶
19.2.1 使用UIBlurEffect实现模糊效果
19.2.2 使用UIVibrancyEffect实现Vibrancy效果
19.3 讨论
展开