iOS项目开发全程实录

更多详情

内容简介: 本书共17章,从搭建开发环境开始,依次讲解了搭建开发环境实战,Objective-C语法实战,Swift语法实战,界面布局实战,控件应用实战,屏幕显示实战,自动交互实战,图形、图像和动画实战,多媒体应用实战,互联网应用实战,地图定位应用实战,传感器、触摸和交互实战,硬件设备操作实战,游戏应用实战,WatchOS 2开发实战,开发框架实战以及移动Web应用等知识。
本书适合iOS初学者、iOS爱好者、iOS开发人员学习,也可以作为相关培训学校和大专院校相关专业的教学用书。


目录: 第1章 搭建开发环境实战 1
1.1 下载并安装Xcode 1
1.1.1 范例说明 1
1.1.2 具体实现 1
1.1.3 范例技巧—成为免费会员还是
付费会员 4
1.2 创建iOS 项目并启动模拟器 4
1.2.1 范例说明 4
1.2.2 具体实现 5
1.2.3 范例技巧—Xcode里的模拟器到底
在哪里 7
1.3 打开一个现有的iOS 项目 7
1.3.1 范例说明 7
1.3.2 具体实现 8
1.3.3 范例技巧—直接双击打开 8
1.4 Xcode基本面板介绍 8
1.4.1 范例说明 8
1.4.2 具体实现 8
1.4.3 范例技巧—使用断点调试 11
1.5 通过搜索框缩小文件范围 13
1.5.1 范例说明 13
1.5.2 具体实现 13
1.5.3 范例技巧—改变公司名称 13
1.6 格式化代码 14
1.6.1 范例说明 14
1.6.2 具体实现 14
1.6.3 范例技巧—代码缩进和自动
完成 14
1.7 文件内查找和替代 15
1.7.1 范例说明 15
1.7.2 具体实现 15
1.7.3 范例技巧—快速定位到代码行 16
1.8 使用Xcode 7帮助系统 17
1.8.1 范例说明 17
1.8.2 具体实现 17
1.8.3 范例技巧—使用Xcode帮助 19
第2章 Objective-C语法实战 20
2.1 输出一个整数 20
2.1.1 范例说明 20
2.1.2 具体实现 20
2.1.3 范例技巧—两种特殊的格式 20
2.2 实现格式化输出 21
2.2.1 范例说明 21
2.2.2 具体实现 21
2.2.3 范例技巧—还存在两种特殊的
格式 21
2.3 使用%f和%e实现格式化输出 21
2.3.1 范例说明 21
2.3.2 具体实现 22
2.3.3 范例技巧—类型double与类型float
类似 22
2.4 有效数字造成误差 22
2.4.1 范例说明 22
2.4.2 具体实现 22
2.4.3 范例技巧—实型数据的分类 23
2.5 使用基本的Objective-C数据类型 23
2.5.1 范例说明 23
2.5.2 具体实现 24
2.5.3 范例技巧—char类型应用注意
事项 24
2.6 使用转义字符 24
2.6.1 范例说明 24
2.6.2 具体实现 24
2.6.3 范例技巧—总结Objective-C常用的转义字符 25
2.7 使用NSLog函数输出不同的数据类型 25
2.7.1 范例说明 25
2.7.2 具体实现 26
2.7.3 范例技巧—NSLog函数的基本
功能 26
2.8 显示变量值并计算结果 27
2.8.1 范例说明 27
2.8.2 具体实现 27
2.8.3 范例技巧—变量的使用诀窍 27
2.9 统一定义变量 28
2.9.1 范例说明 28
2.9.2 具体实现 28
2.9.3 范例技巧—Objective-C对变量命名的硬性规定 28
2.10 使用NSString输出字符 28
2.10.1 范例说明 29
2.10.2 具体实现 29
2.10.3 范例技巧—字符串常量和字符常量
的区别 29
2.11 实现四则运算 29
2.11.1 范例说明 29
2.11.2 具体实现 29
2.11.3 范例技巧—什么是运算符的优
先级 30
2.12 使用整数运算符和一元负号运算符 30
2.12.1 范例说明 30
2.12.2 具体实现 30
2.12.3 范例技巧—代码之美观 31
2.13 使用Objective-C模运算符 31
2.13.1 范例说明 31
2.13.2 具体实现 31
2.13.3 范例技巧—注意模运算符的
优先级 32
2.14 整型值和浮点值的相互转换 32
2.14.1 范例说明 32
2.14.2 具体实现 32
2.14.3 范例技巧—在编写算术表达式时
要记住和整数运算的关系 33
2.15 使用条件运算符 33
2.15.1 范例说明 33
2.15.2 具体实现 33
2.15.3 范例技巧—用作if语句的一种缩写形式 33
2.16 使用比较运算符判断数据大小 34
2.16.1 范例说明 34
2.16.2 具体实现 34
2.16.3 范例技巧—使用Objective-C关系
运算符 34
2.17 使用强制类型转换运算符 35
2.17.1 范例说明 35
2.17.2 具体实现 35
2.17.3 范例技巧—注意表达式类型的自动
提升机制 35
2.18 实现一个计算器 36
2.18.1 范例说明 36
2.18.2 具体实现 36
2.18.3 范例技巧—使用赋值运算符的
目的 37
2.19 使用位运算符 37
2.19.1 范例说明 37
2.19.2 具体实现 37
2.19.3 范例技巧—需要特别注意求反
运算符 38
2.20 使用头文件实现特殊数学运算 38
2.20.1 范例说明 38
2.20.2 具体实现 38
2.20.3 范例技巧—总结Objective-C的
运算符 39
2.21 使用逻辑运算符 40
2.21.1 范例说明 40
2.21.2 具体实现 40
2.21.3 范例技巧—逻辑运算符的特殊说明和规律总结 41
2.22 显示输入数字的绝对值 41
2.22.1 范例说明 41
2.22.2 具体实现 41
2.22.3 范例技巧—单分支if结构的
技巧 42
2.23 判断是奇数还是偶数 42
2.23.1 范例说明 42
2.23.2 具体实现 42
2.23.3 范例技巧—if-else是if语句一般格式的一种扩展形式 43
2.24 判断是否是闰年 43
2.24.1 范例说明 43
2.24.2 具体实现 43
2.24.3 范例技巧—复合运算符的作用 44
2.25 判断输入字符的类型 44
2.25.1 范例说明 44
2.25.2 具体实现 44
2.25.3 范例技巧—“Enter”键的作用 45
2.26 使用switch计算输入表达式的值 45
2.26.1 范例说明 45
2.26.2 具体实现 45
2.26.3 范例技巧—Objective-C与C语言的区别 46
2.27 计算第200个三角形数 46
2.27.1 范例说明 46
2.27.2 具体实现 46
2.27.3 范例技巧—掌握for语句的语法
格式 47
2.28 计算三角形数 47
2.28.1 范例说明 47
2.28.2 具体实现 47
2.28.3 范例技巧—注意界限问题 48
2.29 输出从1到5的整数 48
2.29.1 范例说明 48
2.29.2 具体实现 48
2.29.3 范例技巧—for语句和while语句的等价转换 48
2.30 显示输入数的各个位的值 49
2.30.1 范例说明 49
2.30.2 具体实现 49
2.30.3 范例技巧—使用do语句进行
替换 50
2.31 计算圆的周长和面积 50
2.31.1 范例说明 50
2.31.2 具体实现 50
2.31.3 范例技巧—另外一种计算圆的周长和面积的方法 51
2.32 判断用户输入月份的天数 51
2.32.1 范例说明 51
2.32.2 具体实现 51
2.32.3 范例技巧—尽量把枚举值当作独立的数据类型来对待 52
2.33 生成一个素数表 53
2.33.1 范例说明 53
2.33.2 具体实现 53
2.33.3 范例技巧—类Foundation为使用数组提供了便利 54
2.34 使用方法copy实现复制 54
2.34.1 范例说明 54
2.34.2 具体实现 54
2.34.3 范例技巧—复制操作时的内存
问题 55
2.35 生成斐波纳契数的前15个值 55
2.35.1 范例说明 55
2.35.2 具体实现 55
2.35.3 范例技巧—必须在定义数组后才能使用下标变量 56
2.36 通过数组模拟五子棋应用 56
2.36.1 范例说明 56
2.36.2 具体实现 56
2.36.3 范例技巧—字符数组的作用 57
2.37 计算三角形数 58
2.37.1 范例说明 58
2.37.2 具体实现 58
2.37.3 范例技巧—方法是函数,消息表达式是函数调用 58
2.38 使用头文件实现特殊数学运算 58
2.38.1 范例说明 58
2.38.2 具体实现 59
2.38.3 范例技巧—可以省略返回整数的函数返回类型声明吗 59
2.39 通过函数递归计算fn(10)的值 59
2.39.1 范例说明 59
2.39.2 具体实现 59
2.39.3 范例技巧—函数递归调用的两个
要素 60
2.40 将数组作为函数的参数 60
2.40.1 范例说明 60
2.40.2 具体实现 60
2.40.3 范例技巧—使用防御式编程 61
2.41 实现冒泡排序 62
2.41.1 范例说明 62
2.41.2 具体实现 62
2.41.3 范例技巧—冒泡排序算法的运作
过程 62
2.42 统计数组数据最大值、最小值、平均值和
总和 63
2.42.1 范例说明 63
2.42.2 具体实现 63
2.42.3 范例技巧—局部变量的作用域的
注意事项 64
2.43 利用静态static计算阶乘 64
2.43.1 范例说明 64
2.43.2 具体实现 64
2.43.3 范例技巧—静态存储变量的
生存期 64
2.44 显示当前的日期 65
2.44.1 范例说明 65
2.44.2 具体实现 65
2.44.3 范例技巧—基本数据类型成员变量的初始化缺省值 65
2.45 确定今天是不是一个月最后一天 66
2.45.1 范例说明 66
2.45.2 具体实现 66
2.45.3 范例技巧—必须导入文件Foundation.h 67
2.46 使用指针遍历数组元素 68
2.46.1 范例说明 68
2.46.2 具体实现 68
2.46.3 范例技巧—使用简化方式遍历
数组 68
2.47 对数组元素进行快速排序 69
2.47.1 范例说明 69
2.47.2 具体实现 69
2.47.3 范例技巧—指针和数组的关系 70
2.48 计算整型数组所包含元素的和 70
2.48.1 范例说明 70
2.48.2 具体实现 70
2.48.3 范例技巧—数组还是指针的
选择 71
2.49 将字符串按照从小到大的顺序进行排序 71
2.49.1 范例说明 71
2.49.2 具体实现 71
2.49.3 范例技巧—使用字符串指针变量与字符数组的区别 72
2.50 计算最大值和平均值 73
2.50.1 范例说明 73
2.50.2 具体实现 73
2.50.3 范例技巧—把函数地址赋值给函数指针的两种形式 74
2.51 分别计算数组元素的平方和立方值 74
2.51.1 范例说明 74
2.51.2 具体实现 74
2.51.3 范例技巧—通过函数交换
数值 75
第3章 Swift语法实战 76
3.1 定义并输出常量的值 76
3.1.1 范例说明 76
3.1.2 具体实现 76
3.1.3 范例技巧—Swift的编程风格 76
3.2 定义指定类型的变量 77
3.2.1 范例说明 77
3.2.2 具体实现 77
3.2.3 范例技巧—被称为动态语言的
原因 77
3.3 计算一个圆的面积 77
3.3.1 范例说明 77
3.3.2 具体实现 78
3.3.3 范例技巧—占位符的用法 78
3.4 添加单行注释和多行注释 78
3.4.1 范例说明 78
3.4.2 具体实现 78
3.4.3 范例技巧—使用注释时的
注意事项 78
3.5 输出大整数值 79
3.5.1 范例说明 79
3.5.2 具体实现 79
3.5.3 范例技巧—建议读者尽量不要使用UInt 79
3.6 使用浮点数 79
3.6.1 范例说明 80
3.6.2 具体实现 80
3.6.3 范例技巧—浮点数的精度 80
3.7 输出不同进制的数字17 80
3.7.1 范例说明 80
3.7.2 具体实现 81
3.7.3 范例技巧—使用整型字面量的
规则 81
3.8 实现整型转换 81
3.8.1 范例说明 81
3.8.2 具体实现 81
3.8.3 范例技巧—显式指定长度类型的
意义 82
3.9 使用赋值运算符和表达式 82
3.9.1 范例说明 82
3.9.2 具体实现 83
3.9.3 范例技巧—与 C和 Objective-C 的
不同 83
3.10 实现复杂的数学运算 83
3.10.1 范例说明 83
3.10.2 具体实现 83
3.10.3 范例技巧—Swift语言的双目
运算符 84
3.1 1 使用头文件实现特殊数学运算 84
3.11.1 范例说明 84
3.11.2 具体实现 84
3.11.3 范例技巧—恒等“==”和不恒等“!==” 85
3.1 2 使用三元条件运算符判断变量值 85
3.12.1 范例说明 85
3.12.2 具体实现 85
3.12.3 范例技巧—避免在一个组合语句中使用多个三元条件运算符 86
3.1 3 使用闭范围运算符 86
3.13.1 范例说明 86
3.13.2 具体实现 86
3.13.3 范例技巧—使用半闭区间
运算符 86
3.1 4 使用括号设置运算优先级 87
3.14.1 范例说明 87
3.14.2 具体实现 87
3.14.3 范例技巧—建议在可以让代码变清晰的地方加一个括号 87
3.1 5 使用左移/右移运算符 87
3.15.1 范例说明 87
3.15.2 具体实现 88
3.15.3 范例技巧—左移运算符和右移运算符的实质 88
3.1 6 使用溢出运算符 88
3.16.1 范例说明 88
3.16.2 具体实现 89
3.16.3 范例技巧—实现值的上溢 89
3.17 演示运算符的优先级和结合性 90
3.17.1 范例说明 90
3.17.2 具体实现 90
3.17.3 范例技巧—总结Swift语言运算符的优先级 90
3.18 使用字符型变量 91
3.18.1 范例说明 91
3.18.2 具体实现 91
3.18.3 范例技巧—string与 Foundation
NSString的无缝桥接 92
3.19 判断字符串是否为空 92
3.19.1 范例说明 92
3.19.2 具体实现 92
3.19.3 范例技巧—初始化空字符串 92
3.20 追加字符串的内容 92
3.20.1 范例说明 92
3.20.2 具体实现 93
3.20.3 范例技巧—设置字符串是否可以被修改的方法 93
3.21 获取字符串的字符数量 93
3.21.1 范例说明 93
3.21.2 具体实现 93
3.21.3 范例技巧—定占用相同内存空间的问题 94
3.22 验证字符串是否相等 94
3.22.1 范例说明 94
3.22.2 具体实现 94
3.22.3 范例技巧—字符串相等和前缀/后缀相等 94
3.23 声明数组变量 95
3.23.1 范例说明 95
3.23.2 具体实现 95
3.23.3 范例技巧—推荐用较短的方式声明数组 95
3.24 向数组中添加元素 96
3.24.1 范例说明 96
3.24.2 具体实现 96
3.24.3 范例技巧—不能使用下标语法在数组尾部添加新项 96
3.25 一道数组面试题 96
3.25.1 范例说明 96
3.25.2 具体实现 97
3.25.3 范例技巧—创建并构造一个
数组 98
3.26 声明字典变量 98
3.26.1 范例说明 98
3.26.2 具体实现 98
3.26.3 范例技巧—字典的深层意义 99
3.27 遍历字典中的数据 99
3.27.1 范例说明 100
3.27.2 具体实现 100
3.27.3 范例技巧—使用for-in循环遍历字典数据 100
3.28 使用字典统计字符的出现次数 100
3.28.1 范例说明 101
3.28.2 具体实现 101
3.28.3 范例技巧—字典和数组的复制是
不同的 101
3.29 使用for语句遍历数组 102
3.29.1 范例说明 102
3.29.2 具体实现 102
3.29.3 范例技巧—for语句的执行
流程 102
3.30 使用if语句判断年龄 103
3.30.1 范例说明 103
3.30.2 具体实现 103
3.30.3 范例技巧—if语句的两种标准
形式 103
3.31 使用switch语句判断成绩 103
3.31.1 范例说明 103
3.31.2 具体实现 104
3.31.3 范例技巧—分支switch {case:...}语句的特点 104
3.32 计算指定整数的阶乘 104
3.32.1 范例说明 104
3.32.2 具体实现 105
3.32.3 范例技巧—使用for循环代替while循环 105
3.33 while循环中的死循环 105
3.33.1 范例说明 105
3.33.2 具体实现 105
3.33.3 范例技巧—实现循环语句的
嵌套 106
3.34 使用头文件实现特殊数学运算 106
3.34.1 范例说明 106
3.34.2 具体实现 106
3.34.3 范例技巧—允许多个case匹配同一个值 107
3.35 通过函数比较两个数的大小 107
3.35.1 范例说明 107
3.35.2 具体实现 107
3.35.3 范例技巧—3种调用函数的
方式 107
3.36 使用函数改变引用变量本身 108
3.36.1 范例说明 108
3.36.2 具体实现 108
3.36.3 范例技巧—传递输入输出参数值时的注意事项 109
3.37 在函数中定义函数类型的形参 109
3.37.1 范例说明 109
3.37.2 具体实现 109
3.37.3 范例技巧—将函数类型作为另一个函数的返回类型 110
3.38 使用嵌套函数 110
3.38.1 范例说明 110
3.38.2 具体实现 111
3.38.3 范例技巧—在函数中定义
函数 111
3.39 使用递归解决一道数学题 112
3.39.1 范例说明 112
3.39.2 具体实现 112
3.39.3 范例技巧—Swift中的内置
函数 112
3.40 调用闭包 112
3.40.1 范例说明 112
3.40.2 具体实现 113
3.40.3 范例技巧—闭包的优化目标 113
3.41 捕获上下文中的变量和常量 113
3.41.1 范例说明 113
3.41.2 具体实现 113
3.41.3 范例技巧—尾随闭包的作用 114
3.42 使用case定义多个枚举 114
3.42.1 范例说明 114
3.42.2 具体实现 114
3.42.3 范例技巧—为枚举定义原始值 115
3.43 使用可选链代替强制解析 116
3.43.1 范例说明 116
3.43.2 具体实现 116
3.43.3 范例技巧—如何选择类型 117
3.44 测试释放的时间点 118
3.44.1 范例说明 118
3.44.2 具体实现 118
3.44.3 范例技巧—弱引用的作用 119
3.45 使用类型约束实现冒泡排序算法 119
3.45.1 范例说明 119
3.45.2 具体实现 119
3.45.3 范例技巧—定义冒泡排序函数 120
3.46 使用关联类型 121
3.46.1 范例说明 121
3.46.2 具体实现 121
3.46.3 范例技巧—Array的3个功能 122
第4章 界面布局实战 123
4.1 将Xcode界面连接到代码 123
4.1.1 范例说明 123
4.1.2 具体实现 123
4.1.3 范例技巧—Interface Builder可以
提高开发效率 128
4.2 纯代码方式实现UI 128
4.2.1 范例说明 128
4.2.2 具体实现 128
4.2.3 范例技巧—什么情况下使用IB进行
开发 129
4.3 使用模板Single View Application 130
4.3.1 范例说明 130
4.3.2 具体实现 130
4.3.3 范例技巧—Xcode中的MVC 140
4.4 使用头文件实现特殊数学运算 140
4.4.1 范例说明 140
4.4.2 具体实现 140
4.4.3 范例技巧—头文件中的常用函数 142
4.5 拆分表视图 142
4.5.1 范例说明 142
4.5.2 具体实现 142
4.5.3 范例技巧—表视图的外观 143
4.6 自定义一个UITableViewCell 143
4.6.1 范例说明 144
4.6.2 具体实现 144
4.6.3 范例技巧—什么是表单元格 147
4.7 实现一个图文样式联系人列表效果 148
4.7.1 范例说明 148
4.7.2 具体实现 148
4.7.3 范例技巧—在配置表视图时必须设置标识符 148
4.8 在表视图中动态操作单元格(Swift版) 148
4.8.1 范例说明 148
4.8.2 具体实现 149
4.8.3 范例技巧—表视图数据源协议 150
4.9 给四条边框加上阴影 151
4.9.1 范例说明 151
4.9.2 具体实现 151
4.9.3 范例技巧—UITableView的属性 151
4.10 给UIView加上各种圆角、边框效果 152
4.10.1 范例说明 152
4.10.2 具体实现 152
4.10.3 范例技巧—UIView在MVC中的重要作用 152
4.11 实现弹出式动画表单效果 153
4.11.1 范例说明 153
4.11.2 具体实现 153
4.11.3 范例技巧—UIView的本质 154
4.12 创建一个滚动图片浏览器(Swift版) 154
4.12.1 范例说明 154
4.12.2 具体实现 154
4.12.3 范例技巧—UIView中的
CALayer 155
4.13 实现可以移动切换的视图效果 155
4.13.1 范例说明 155
4.13.2 具体实现 155
4.13.3 范例技巧—iOS程序的视图
架构 158
4.14 实现手动旋转屏幕的效果 159
4.14.1 范例说明 159
4.14.2 具体实现 159
4.14.3 范例技巧—视图层次和子视图
管理 160
4.15 实现会员登录系统(Swift版) 160
4.15.1 范例说明 160
4.15.2 具体实现 160
4.15.3 范例技巧—UIViewController的
属性 161
4.16 使用导航控制器展现3个场景 162
4.16.1 范例说明 162
4.16.2 具体实现 162
4.16.3 范例技巧—UINavigationController的作用 163
4.17 实现一个界面导航条功能 163
4.17.1 范例说明 163
4.17.2 具体实现 163
4.17.3 范例技巧—导航栏、导航项和栏
按钮项 165
4.18 创建主从关系的“主-子”视图
(Swift版) 166
4.18.1 范例说明 166
4.18.2 具体实现 166
4.18.3 范例技巧—深入理解navigationItem的作用 167
4.19 使用选项卡栏控制器构建3个场景 167
4.19.1 范例说明 167
4.19.2 具体实现 167
4.19.3 范例技巧—UITabBarController推入和推出视图的方式 168
4.20 使用动态单元格定制表格行 168
4.20.1 范例说明 168
4.20.2 具体实现 168
4.20.3 范例技巧—选项卡栏和选项卡
栏项 169
4.21 开发一个界面选择控制器(Swift版) 169
4.21.1 范例说明 169
4.21.2 具体实现 169
4.21.3 范例技巧—添加选项卡栏控制器的方法 170
4.22 使用第二个视图来编辑第一个视图中的
信息 171
4.22.1 范例说明 171
4.22.2 具体实现 171
4.22.3 范例技巧—多场景应用程序的常用术语 175
4.23 实现多个视图之间的切换 175
4.23.1 范例说明 176
4.23.2 具体实现 176
4.23.3 范例技巧—实现多场景功能的方法是在故事板文件中创建多个场景 179
4.24 实现多场景视图数据传输(Swift版) 179
4.24.1 范例说明 180
4.24.2 具体实现 180
4.24.3 范例技巧—初步理解手势识别的
作用 181
4.25 使用Segue实现过渡效果 181
4.25.1 范例说明 181
4.25.2 具体实现 181
4.25.3 范例技巧—隐藏指定的UIView
区域的方法 182
4.26 为Interface Builder设置自定义类
(Swift版) 182
4.26.1 范例说明 182
4.26.2 具体实现 182
4.26.3 范例技巧—IB和纯代码联合编码的好处 183
4.27 在同一个工程中创建多个分类
(Swift版) 183
4.27.1 范例说明 183
4.27.2 具体实现 183
4.27.3 范例技巧—MVC中对控制器对象的理解 184
4.28 创建一个自定义的UIView视图
(Swift版) 185
4.28.1 范例说明 185
4.28.2 具体实现 185
4.28.3 范例技巧—定位屏幕中的图片的
方法 186
4.29 动态控制屏幕中动画的颜色
(Swift版) 186
4.29.1 范例说明 186
4.29.2 具体实现 186
4.29.3 范例技巧—视图绘制周期 187
4.30 实现多视图导航界面系统(Swift版) 187
4.30.1 范例说明 187
4.30.2 具体实现 188
4.30.3 范例技巧—实现背景透明 188
4.31 实现一个会员登录系统(Swift版) 188
4.31.1 范例说明 188
4.31.2 具体实现 188
4.31.3 范例技巧—旋转和缩放视图的
方法 190
4.32 创建一个App软件管理系统
(Swift版) 190
4.32.1 范例说明 190
4.32.2 具体实现 190
4.32.3 范例技巧—UIActivityIndicatorView的系统样式 192
4.33 创建一个图片浏览系统(Swift版) 192
4.33.1 范例说明 192
4.33.2 具体实现 192
4.33.3 范例技巧—UITableView的主要
作用 194
4.34 创建多界面视图(Swift版) 194
4.34.1 范例说明 194
4.34.2 具体实现 194
4.34.3 范例技巧—UITableView的初始化方法 195
4.35 联合使用UITabbarController和UIWebView
(Swift版) 195
4.35.1 范例说明 195
4.35.2 具体实现 195
4.35.3 范例技巧—UITableView的委托
方法 196
第5章 控件应用实战 198
5.1 控制是否显示TextField中的密码明文
信息 198
5.1.1 范例说明 198
5.1.2 具体实现 198
5.1.3 范例技巧—文本框的功能 199
5.2 对输入内容的长度进行验证 199
5.2.1 范例说明 199
5.2.2 具体实现 199
5.2.3 范例技巧—ViewController.m的
功能 200
5.3 实现用户登录框界面 200
5.3.1 范例说明 200
5.3.2 具体实现 200
5.3.3 范例技巧—控件UITextField的常用属性 201
5.4 震动UITextField控件(Swift版) 201
5.4.1 范例说明 201
5.4.2 具体实现 201
5.4.3 范例技巧—改变TextField背景
图片 202
5.5 动态输入的文本 202
5.5.1 范例说明 202
5.5.2 具体实现 202
5.5.3 范例技巧—什么是文本视图(UITextView) 203
5.6 自定义文字的行间距 203
5.6.1 范例说明 203
5.6.2 具体实现 203
5.6.3 范例技巧—Text Field部分的具体
说明 204
5.7 自定义UITextView控件的样式 205
5.7.1 范例说明 205
5.7.2 具体实现 205
5.7.3 范例技巧—Captitalization的
作用 206
5.8 在指定的区域中输入文本(Swift版) 206
5.8.1 范例说明 206
5.8.2 具体实现 206
5.8.3 范例技巧—3个重要的键盘属性 207
5.9 使用UILabel显示一段文本 207
5.9.1 范例说明 207
5.9.2 具体实现 207
5.9.3 范例技巧—标签(UILabel)的
作用 208
5.10 为文字分别添加上划线、下划线和
中划线 209
5.10.1 范例说明 209
5.10.2 具体实现 209
5.10.3 范例技巧—标签(UILabel)的常用属性 209
5.11 显示被触摸单词的字母 210
5.11.1 范例说明 210
5.11.2 具体实现 210
5.11.3 范例技巧—截取文本操作 211
5.12 输出一个指定样式的文本(Swift版) 211
5.12.1 范例说明 211
5.12.2 具体实现 211
5.12.3 范例技巧—让UILabel的文字顶部对齐 212
5.13 自定义设置按钮的图案(Swift版) 212
5.13.1 范例说明 212
5.13.2 具体实现 212
5.13.3 范例技巧—按钮(UIButton)的
作用 214
5.14 实现一个变换形状的动画按钮 215
5.14.1 范例说明 215
5.14.2 具体实现 215
5.14.3 范例技巧—按钮的外观风格 216
5.15 联合使用文本框、文本视图和按钮 216
5.15.1 范例说明 216
5.15.2 具体实现 216
5.15.3 范例技巧—设置成不同的背景
颜色 217
5.16 自定义一个按钮(Swift版) 218
5.16.1 范例说明 218
5.16.2 具体实现 218
5.16.3 范例技巧—何时释放release UIButton 219
5.17 使用素材图片实现滑动条特效 219
5.17.1 范例说明 219
5.17.2 具体实现 219
5.17.3 范例技巧—滑块(UISlider)
介绍 220
5.18 实现一个自动显示刻度记号的滑动条 221
5.18.1 范例说明 221
5.18.2 具体实现 221
5.18.3 范例技巧—滑块的作用 222
5.19 在屏幕中实现各种各样的滑块 222
5.19.1 范例说明 222
5.19.2 具体实现 223
5.19.3 范例技巧—UISlider控件的常用
属性 223
5.20 自定义实现UISlider控件功能
(Swift版) 223
5.20.1 范例说明 223
5.20.2 具体实现 223
5.20.3 范例技巧—设定滑块的范围与
默认值 224
5.21 自定义步进控件的样式 224
5.21.1 范例说明 224
5.21.2 具体实现 224
5.21.3 范例技巧—IStepper的属性 225
5.22 设置指定样式的步进控件 225
5.22.1 范例说明 225
5.22.2 具体实现 225
5.22.3 范例技巧—UIStepper的控制
属性 226
5.23 使用步进控件自动增减数字
(Swift版) 226
5.23.1 范例说明 226
5.23.2 具体实现 227
5.23.3 范例技巧—UIStepper控件的一个有趣特性 227
5.24 限制输入文本的长度 227
5.24.1 范例说明 227
5.24.2 具体实现 228
5.24.3 范例技巧—复制文件到测试
工程中 228
5.25 关闭虚拟键盘的输入动作 228
5.25.1 范例说明 228
5.25.2 具体实现 228
5.25.3 范例技巧—接口文件的实现 229
5.26 复制UILabel中的文本内容 229
5.26.1 范例说明 229
5.26.2 具体实现 229
5.26.3 范例技巧—核心文件的具体
实现 231
5.27 实现丰富多彩的控制按钮 231
5.27.1 范例说明 231
5.27.2 具体实现 231
5.27.3 范例技巧—创建按钮的通用
方法 231
5.28 显示对应的刻度 232
5.28.1 范例说明 232
5.28.2 具体实现 232
5.28.3 范例技巧—按钮控件中的常用
事件 233
5.29 在屏幕中输入文本(Swift版) 234
5.29.1 范例说明 234
5.29.2 具体实现 234
5.29.3 范例技巧—UITextField的按钮
样式 235
5.30 验证输入的文本(Swift版) 235
5.30.1 范例说明 236
5.30.2 具体实现 236
5.30.3 范例技巧—重写UITextField的绘制行为 237
5.31 实现一个文本编辑器(Swift版) 237
5.31.1 范例说明 237
5.31.2 具体实现 237
5.31.3 范例技巧—UITextView退出键盘的几种方式 238
5.32 在屏幕中输入可编辑文本
(Swift版) 238
5.32.1 范例说明 238
5.32.2 具体实现 238
5.32.3 范例技巧—为UITextView设定圆角效果 240
5.33 实现图文样式的按钮(Swift版) 240
5.33.1 范例说明 240
5.33.2 具体实现 241
5.33.3 范例技巧—通过按钮的事件来设置背景色 241
5.34 在UILabel中显示图标(Swift版) 241
5.34.1 范例说明 241
5.34.2 具体实现 242
5.34.3 范例技巧—创建指定大小的系统默认字体(默认:Helvetica) 242
5.35 自定义按钮的样式(Swift版) 243
5.35.1 范例说明 243
5.35.2 具体实现 243
5.35.3 范例技巧—获取可用的字体名
数组 243
5.36 自定义设置一个指定的按钮样式
(Swift版) 243
5.36.1 范例说明 244
5.36.2 具体实现 244
5.36.3 范例技巧—UIButton控件中的addSubview问题 245
5.37 实现纵向样式的滑块效果(Swift版) 245
5.37.1 范例说明 245
5.37.2 具体实现 246
5.37.3 范例技巧—滑块控件的通知
问题 246
5.38 实现滑块和进度条效果(Swift版) 247
5.38.1 范例说明 247
5.38.2 具体实现 247
5.38.3 范例技巧—UISlider的本质 247
5.39 使用步进控件浏览图片(Swift版) 248
5.39.1 范例说明 248
5.39.2 具体实现 248
5.39.3 范例技巧—设置步进控件的
颜色 248
5.40 使用步进控件显示数值(Swift版) 248
5.40.1 范例说明 248
5.40.2 具体实现 249
5.40.3 范例技巧—Swift步进控件的通用
用法 249
第6章 屏幕显示实战 250
6.1 改变UISwitch的文本和颜色 250
6.1.1 范例说明 250
6.1.2 具体实现 250
6.1.3 范例技巧—不要在设备屏幕上显示出乎用户意料的控件 252
6.2 在屏幕中显示具有开关状态的开关 252
6.2.1 范例说明 252
6.2.2 具体实现 252
6.2.3 范例技巧—总结开关控件的基本
用法 253
6.3 控制是否显示密码明文(Swift版) 253
6.3.1 范例说明 253
6.3.2 具体实现 254
6.3.3 范例技巧—单独编写类文件DKTextField.swift的原因 255
6.4 在屏幕中使用UISegmentedControl控件 255
6.4.1 范例说明 255
6.4.2 具体实现 255
6.4.3 范例技巧—解决分段控件导致内容变化的问题 256
6.5 添加图标和文本 256
6.5.1 范例说明 257
6.5.2 具体实现 257
6.5.3 范例技巧—分段控件的属性和
方法 257
6.6 使用分段控件控制背景颜色 258
6.6.1 范例说明 258
6.6.2 具体实现 259
6.6.3 范例技巧—要获取分段控件中当前选定按钮的标题 259
6.7 自定义UISegmentedControl控件的样式
(Swift版) 260
6.7.1 范例说明 260
6.7.2 具体实现 260
6.7.3 范例技巧—UISegmentedControl的常用方法 260
6.8 实现一个自定义提醒对话框 260
6.8.1 范例说明 261
6.8.2 具体实现 261
6.8.3 范例技巧—设置标签之间分割线的图案 261
6.9 实现振动提醒框效果 262
6.9.1 范例说明 262
6.9.2 具体实现 262
6.9.3 范例技巧—提醒框视图的意义 262
6.10 自定义UIAlertView控件的外观 263
6.10.1 范例说明 263
6.10.2 具体实现 263
6.10.3 范例技巧—对UIAlertView的
要求 266
6.11 使用UIAlertView控件(Swift版) 266
6.11.1 范例说明 266
6.11.2 具体实现 266
6.11.3 范例技巧—在实现提醒视图前需要先声明一个UIAlertView对象 266
6.12 实现特殊样式效果的UIActionSheet 266
6.12.1 范例说明 267
6.12.2 具体实现 267
6.12.3 范例技巧—UIActionSheet的
作用 267
6.13 实现Reeder阅读器效果 267
6.13.1 范例说明 267
6.13.2 具体实现 267
6.13.3 范例技巧—Reeder阅读器介绍 271
6.14 定制一个按钮面板 271
6.14.1 范例说明 271
6.14.2 具体实现 271
6.14.3 范例技巧—操作表的基本用法 272
6.15 实现一个分享App(Swift版) 272
6.15.1 范例说明 272
6.15.2 具体实现 272
6.15.3 范例技巧—操作表外观有4种
样式 274
6.16 使用UIToolBar实现工具栏(Swift版) 274
6.16.1 范例说明 274
6.16.2 具体实现 274
6.16.3 范例技巧—工具栏的作用 275
6.17 自定义UIToolBar的颜色和样式 275
6.17.1 范例说明 275
6.17.2 具体实现 275
6.17.3 范例技巧—工具栏与分段控件的
差别 276
6.18 创建一个带有图标按钮的工具栏 276
6.18.1 范例说明 276
6.18.2 具体实现 276
6.18.3 范例技巧—调整工具栏按钮位置的
方法 277
6.19 实现网格效果 278
6.19.1 范例说明 278
6.19.2 具体实现 278
6.19.3 范例技巧—UICollectionView的
构成 280
6.20 实现大小不相同的网格效果 280
6.20.1 范例说明 281
6.20.2 具体实现 281
6.20.3 范例技巧—UICollectionViewDataSource代理介绍 283
6.21 实现Pinterest样式的布局效果
(Swift版) 283
6.21.1 范例说明 284
6.21.2 具体实现 284
6.21.3 范例技巧—得到高效View的
秘籍 285
6.22 创建并使用选择框 286
6.22.1 范例说明 286
6.22.2 具体实现 286
6.22.3 范例技巧—开关控件的
默认尺寸 287
6.23 自定义工具条 287
6.23.1 范例说明 287
6.23.2 具体实现 287
6.23.3 范例技巧—为UIAlertView添加多个按钮 288
6.24 实现一个带输入框的提示框 288
6.24.1 范例说明 288
6.24.2 具体实现 288
6.24.3 范例技巧—如何为UIAlertView添加子视图 289
6.25 实现一个图片选择器 289
6.25.1 范例说明 289
6.25.2 具体实现 289
6.25.3 范例技巧—自定义消息文本 291
6.26 控制开关控件的状态(Swift版) 291
6.26.1 范例说明 291
6.26.2 具体实现 291
6.26.3 范例技巧—设置在开关状态切换时收到通知 292
6.27 在屏幕中显示不同样式的开关控件
(Swift版) 292
6.27.1 范例说明 292
6.27.2 具体实现 292
6.27.3 范例技巧—关于UISwitch的亮点特殊说明 295
6.28 实现指定样式的选项卡效果(Swift版) 295
6.28.1 范例说明 295
6.28.2 具体实现 295
6.28.3 范例技巧—获取标签之间分割线的图案 296
6.29 使用选项卡控制屏幕的背景颜色
(Swift版) 296
6.29.1 范例说明 296
6.29.2 具体实现 296
6.29.3 范例技巧—自行设置标签内容的偏移量 297
6.30 实现图文效果的提醒框(Swift版) 297
6.30.1 范例说明 297
6.30.2 具体实现 297
6.30.3 范例技巧—didPresentAlertView和willPresentAlertView的区别 298
6.31 实现一个独立的提醒框效果
(Swift版) 298
6.31.1 范例说明 298
6.31.2 具体实现 299
6.31.3 范例技巧—提醒框视图delegate 方法的执行顺序 299
6.32 实现一个基本的选项卡提醒框
(Swift版) 299
6.32.1 范例说明 299
6.32.2 具体实现 299
6.32.3 范例技巧—操作表与提醒视图的
区别 300
6.33 创建自定义效果的UIActionSheet
(Swift版) 300
6.33.1 范例说明 300
6.33.2 具体实现 300
6.33.3 范例技巧—响应操作表的方法 301
6.34 设置UIBarButtonItem图标(Swift版) 302
6.34.1 范例说明 302
6.34.2 具体实现 302
6.34.3 范例技巧—UIBarButtonItem的最简单定制方法 303
6.35 编辑UIBarButtonItem的标题
(Swift版) 303
6.35.1 范例说明 303
6.35.2 具体实现 303
6.35.3 范例技巧—配制栏按钮的属性 304
第7章 自动交互实战 306
7.1 实现界面滚动效果 306
7.1.1 范例说明 306
7.1.2 具体实现 306
7.1.3 范例技巧—滚动功能在移动设备中的意义 307
7.2 滑动隐藏状态栏 307
7.2.1 范例说明 307
7.2.2 具体实现 307
7.2.3 范例技巧—滚动控件的原理 308
7.3 滚动浏览图片(Swift版) 308
7.3.1 范例说明 308
7.3.2 具体实现 308
7.3.3 范例技巧—滚动控件的初始化 309
7.4 自定义 UIPageControl的外观样式 309
7.4.1 范例说明 309
7.4.2 具体实现 309
7.4.3 范例技巧—什么是翻页控件 310
7.5 实现一个图片播放器 310
7.5.1 范例说明 310
7.5.2 具体实现 310
7.5.3 范例技巧—分页控件的展示
方式 312
7.6 实现一个图片浏览程序 312
7.6.1 范例说明 312
7.6.2 具体实现 312
7.6.3 范例技巧—创建UIPageControl控件并设置属性的通用方法 313
7.7 使用UIPageControl设置4个界面
(Swift版) 313
7.7.1 范例说明 313
7.7.2 具体实现 313
7.7.3 范例技巧—发送分页通知的解决
方案 315
7.8 实现两个UIPickerView间的数据依赖 315
7.8.1 范例说明 315
7.8.2 具体实现 315
7.8.3 范例技巧—为什么修改参数 317
7.9 自定义一个选择器 317
7.9.1 范例说明 318
7.9.2 具体实现 318
7.9.3 范例技巧—总结规划变量和连接的过程 321
7.10 实现一个单列选择器 321
7.10.1 范例说明 321
7.10.2 具体实现 321
7.10.3 范例技巧—添加选择器视图的
方法 322
7.11 实现一个会发音的倒计时器
(Swift版) 322
7.11.1 范例说明 322
7.11.2 具体实现 322
7.11.3 范例技巧—选择器视图的数据源
协议 324
7.12 实现一个日期选择器 325
7.12.1 范例说明 325
7.12.2 具体实现 325
7.12.3 范例技巧—什么是选择器 328
7.13 使用日期选择器自动选择一个时间 328
7.13.1 范例说明 328
7.13.2 具体实现 328
7.13.3 范例技巧—Apple中的两种
选择器 329
7.14 使用UIDatePicker(Swift版) 329
7.14.1 范例说明 329
7.14.2 具体实现 329
7.14.3 范例技巧—总结日期选择器的常用属性 331
7.15 自定义UIActivityIndicatorView的样式 332
7.15.1 范例说明 332
7.15.2 具体实现 332
7.15.3 范例技巧—UIActivityIndicatorView的功能 334
7.16 自定义活动指示器的显示样式 335
7.16.1 范例说明 335
7.16.2 具体实现 335
7.16.3 范例技巧—iOS内置的不同样式的UIActivityIndicator View 338
7.17 实现不同外观的活动指示器效果 338
7.17.1 范例说明 338
7.17.2 具体实现 338
7.17.3 范例技巧—UIActivityIndicatorView的使用演示 339
7.18 使用UIActivityIndicatorView控件
(Swift版) 339
7.18.1 范例说明 339
7.18.2 具体实现 339
7.18.3 范例技巧—总结
UIActivityIndicatorView的用处 340
7.19 自定义进度条的外观样式 340
7.19.1 范例说明 340
7.19.2 具体实现 340
7.19.3 范例技巧—3种属性设置风格 341
7.20 实现多个具有动态条纹背景的进度条 341
7.20.1 范例说明 341
7.20.2 具体实现 341
7.20.3 范例技巧—UIProgressView与UIActivityIndicatorView的差异 343
7.21 自定义一个指定外观样式的进度条 344
7.21.1 范例说明 344
7.21.2 具体实现 344
7.21.3 范例技巧—进度条的常用属性 347
7.22 实现自定义进度条效果(Swift版) 348
7.22.1 范例说明 348
7.22.2 具体实现 348
7.22.3 范例技巧—常用的两种进度条
风格 349
7.23 在查找信息输入关键字时实现自动提示
功能 349
7.23.1 范例说明 349
7.23.2 具体实现 349
7.23.3 范例技巧—UISearchBar控件的常用属性 350
7.24 实现文字输入的自动填充和自动提示
功能 351
7.24.1 范例说明 351
7.24.2 具体实现 351
7.24.3 范例技巧—修改UISearchBar的背景颜色 352
7.25 使用检索控件快速搜索信息 352
7.25.1 范例说明 352
7.25.2 具体实现 352
7.25.3 范例技巧—利用委托进行搜索的
过程 355
7.26 使用UISearchBar控件(Swift版) 355
7.26.1 范例说明 355
7.26.2 具体实现 355
7.26.3 范例技巧—searchDisplayController的搜索过程 356
7.27 在屏幕中显示一个日期选择器 356
7.27.1 范例说明 356
7.27.2 具体实现 356
7.27.3 范例技巧—创建日期/时间
选取器 357
7.28 通过滚动屏幕的方式浏览信息 357
7.28.1 范例说明 357
7.28.2 具体实现 358
7.28.3 范例技巧—滚动控件的属性
总结 358
7.29 实现一个图文样式联系人列表效果 359
7.29.1 范例说明 359
7.29.2 具体实现 359
7.29.3 范例技巧—UIScrollView的
实现理念 360
7.30 在屏幕中实现一个环形进度条效果 360
7.30.1 范例说明 360
7.30.2 具体实现 360
7.30.3 范例技巧—改变UIProgressView
控件的高度 361
7.31 实现快速搜索功能 361
7.31.1 范例说明 361
7.31.2 具体实现 362
7.31.3 范例技巧—去除SearchBar背景的
方法 364
7.32 实现一个“星期”选择框(Swift版) 364
7.32.1 范例说明 364
7.32.2 具体实现 364
7.32.3 范例技巧—日期选取器的模式 365
7.33 实现一个自动输入系统(Swift版) 365
7.33.1 范例说明 365
7.33.2 具体实现 366
7.33.3 范例技巧—设置时间间隔 367
7.34 自定义UIDatePicker控件(Swift版) 367
7.34.1 范例说明 367
7.34.2 具体实现 367
7.34.3 范例技巧—设置日期的范围 369
7.35 自定义“日期-时间”控件(Swift版) 370
7.35.1 范例说明 370
7.35.2 具体实现 370
7.35.3 范例技巧—显示日期选择器的
方法 370
7.36 实现一个图片浏览器(Swift版) 370
7.36.1 范例说明 370
7.36.2 具体实现 370
7.36.3 范例技巧—UIScrollView的
核心理念 371
7.37 实现一个分页图片浏览器(Swift版) 371
7.37.1 范例说明 372
7.37.2 具体实现 372
7.37.3 范例技巧—实现翻页通知的
方法 372
7.38 实现一个图片浏览器(Swift版) 373
7.38.1 范例说明 373
7.38.2 具体实现 373
7.38.3 范例技巧—给UIPageControl控件添加背景 374
7.39 设置多个分页视图(Swift版) 374
7.39.1 范例说明 374
7.39.2 具体实现 375
7.39.3 范例技巧—推出UIPageControl的
意义 376
7.40 自定义UIActivityIndicatorView控件
(Swift版) 376
7.40.1 范例说明 376
7.40.2 具体实现 376
7.40.3 范例技巧—关闭活动指示器动画的方法 377
7.41 实现5种样式的活动指示器效果
(Swift版) 377
7.41.1 范例说明 377
7.41.2 具体实现 377
7.41.3 范例技巧—设置UIActivityIndicatorView背景颜色的
方法 380
7.42 自定义设置ProgressBar的
样式(Swift版) 380
7.42.1 范例说明 380
7.42.2 具体实现 380
7.42.3 范例技巧—单独设置已走过进度的进度条颜色的方法 380
7.43 设置UIProgressView的样式(Swift版) 380
7.43.1 范例说明 381
7.43.2 具体实现 381
7.43.3 范例技巧—如何设置未走过进度的进度条颜色 381
7.44 快速搜索系统(Swift版) 381
7.44.1 范例说明 381
7.44.2 具体实现 381
7.44.3 范例技巧—4个搜索状态改变的关键函数 383
7.45 实现具有两个视图界面的搜索系统
(Swift版) 383
7.45.1 范例说明 383
7.45.2 具体实现 383
7.45.3 范例技巧—显示和隐藏tableview的4种方法 383
第8章 图形、图像和动画实战 384
8.1 实现图像的模糊效果 384
8.1.1 范例说明 384
8.1.2 具体实现 384
8.1.3 范例技巧—iOS模糊功能的发展
历程 386
8.2 滚动浏览图片 386
8.2.1 范例说明 387
8.2.2 具体实现 387
8.2.3 范例技巧—图像视图的作用 387
8.3 实现一个图片浏览器 388
8.3.1 范例说明 388
8.3.2 具体实现 388
8.3.3 范例技巧—创建一个UIImageView的方法 389
8.4 实现3个图片按钮(Swift版) 389
8.4.1 范例说明 389
8.4.2 具体实现 390
8.4.3 范例技巧—属性frame与属性
bounds 391
8.5 在屏幕中绘制一个三角形 391
8.5.1 范例说明 391
8.5.2 具体实现 391
8.5.3 范例技巧—在iOS中绘图的两种
方式 392
8.6 在屏幕中绘制一个三角形 392
8.6.1 范例说明 392
8.6.2 具体实现 392
8.6.3 范例技巧—iOS的核心图形库的绘图原理 395
8.7 绘制移动的曲线(Swift版) 395
8.7.1 范例说明 395
8.7.2 具体实现 395
8.7.3 范例技巧—OpenGL ES绘图方式的原理 395
8.8 在屏幕中实现颜色选择器/调色板功能 396
8.8.1 范例说明 396
8.8.2 具体实现 396
8.8.3 范例技巧—UIImageView和Core Graphics都可以绘图 396
8.9 绘制一个小黄人图像 396
8.9.1 范例说明 397
8.9.2 具体实现 397
8.9.3 范例技巧—绘图中的坐标系 397
8.10 实现图片、文字以及翻转效果 398
8.10.1 范例说明 398
8.10.2 具体实现 398
8.10.3 范例技巧—绘图系统的画图板
原理 399
8.11 滑动展示不同的图片 399
8.11.1 范例说明 399
8.11.2 具体实现 399
8.11.3 范例技巧—什么是图层 400
8.12 演示CALayers图层的用法(Swift版) 400
8.12.1 范例说明 400
8.12.2 具体实现 401
8.12.3 范例技巧—图层有影响绘图效果的属性 401
8.13 使用图像动画 402
8.13.1 范例说明 402
8.13.2 具体实现 402
8.13.3 范例技巧—需要提前考虑的两个
问题 405
8.14 实现UIView分类动画效果 405
8.14.1 范例说明 405
8.14.2 具体实现 405
8.14.3 范例技巧—在iOS中实现动画的
方法 406
8.15 使用动画的样式显示电量的使用情况 407
8.15.1 范例说明 407
8.15.2 具体实现 407
8.15.3 范例技巧—UIImageView实现动画的原理 410
8.16 图形图像的人脸检测处理(Swift版) 410
8.16.1 范例说明 410
8.16.2 具体实现 410
8.16.3 范例技巧—在UIImageView中和动画相关的方法和属性 411
8.17 实现一个幻灯片播放器效果 411
8.17.1 范例说明 411
8.17.2 具体实现 411
8.17.3 范例技巧—iOS系统的核心
动画 412
8.18 绘制几何图形 412
8.18.1 范例说明 412
8.18.2 具体实现 412
8.18.3 范例技巧—基本的绘图过程 413
8.19 实现对图片的旋转和缩放 414
8.19.1 范例说明 414
8.19.2 具体实现 414
8.19.3 范例技巧—总结Core Graphics中常用的绘图方法 414
8.20 使用属性动画 414
8.20.1 范例说明 415
8.20.2 具体实现 415
8.20.3 范例技巧—总结beginAnimations:context:的功能 417
8.21 给图片着色(Swift版) 417
8.21.1 范例说明 417
8.21.2 具体实现 417
8.21.3 范例技巧—总结contentMode
属性 418
8.22 实现旋转动画效果(Swift版) 419
8.22.1 范例说明 419
8.22.2 具体实现 419
8.22.3 范例技巧—总结+ (void)commitAnimations 419
8.23 绘制一个时钟(Swift版) 420
8.23.1 范例说明 420
8.23.2 具体实现 420
8.23.3 范例技巧—更改图片位置的
方法 421
8.24 绘制一个可控制的环形进度条
(Swift版) 422
8.24.1 范例说明 422
8.24.2 具体实现 422
8.24.3 范例技巧—总结旋转图像的
方法 422
8.25 实现大小图形的变换(Swift版) 423
8.25.1 范例说明 423
8.25.2 具体实现 423
8.25.3 范例技巧—图层可以在一个单独的视图中被组合起来 424
8.26 为图层增加阴影效果(Swift版) 424
8.26.1 范例说明 424
8.26.2 具体实现 424
8.26.3 范例技巧—图层是动画的基本组成部分 425
8.27 实现触摸动画效果(Swift版) 425
8.27.1 范例说明 425
8.27.2 具体实现 425
8.27.3 范例技巧—视图和图层的关系 426
8.28 实现动画效果(Swift版) 426
8.28.1 范例说明 427
8.28.2 具体实现 427
8.28.3 范例技巧—实现多个动画的
方法 429
8.29 在屏幕中实现模糊效果 429
8.29.1 范例说明 429
8.29.2 具体实现 429
8.29.3 范例技巧—避免将UIVisualEffectView的Alpha设置为小于1.0的值 430
8.30 给指定图片实现模糊效果 430
8.30.1 范例说明 431
8.30.2 具体实现 431
8.30.3 范例技巧—初始化一个UIVisualEffectView对象的方法 433
8.31 编码实现指定图像的模糊效果
(Swift版) 433
8.31.1 范例说明 433
8.31.2 具体实现 433
8.31.3 范例技巧—UIBlurEffect和UIVibrancyEffect的区别 434
第9章 多媒体应用实战 435
9.1 播放声音文件 435
9.1.1 范例说明 435
9.1.2 具体实现 435
9.1.3 范例技巧—访问声音服务 438
9.2 播放列表中的音乐(Swift版) 438
9.2.1 范例说明 438
9.2.2 具体实现 439
9.2.3 范例技巧—iOS系统的播放声音
服务 442
9.3 使用iOS的提醒功能 442
9.3.1 范例说明 442
9.3.2 具体实现 442
9.3.3 范例技巧—创建包含多个按钮的提醒视图 444
9.4 实现两种类型的振动效果(Swift版) 444
9.4.1 范例说明 444
9.4.2 具体实现 444
9.4.3 范例技巧—System Sound Services
支持的3种通知 445
9.5 使用Media Player播放视频 445
9.5.1 范例说明 445
9.5.2 具体实现 445
9.5.3 范例技巧—iOS系统的多媒体播放
机制 447
9.6 边下载边播放视频 447
9.6.1 范例说明 447
9.6.2 具体实现 447
9.6.3 范例技巧—Media Player框架
介绍 449
9.7 播放指定的视频(Swift版) 449
9.7.1 范例说明 449
9.7.2 具体实现 449
9.7.3 范例技巧—Media Player的原理 451
9.8 播放指定的视频 451
9.8.1 范例说明 451
9.8.2 具体实现 452
9.8.3 范例技巧—官方建议使用AV Foundation框架 452
9.9 播放和暂停指定的MP3文件
(Swift版) 452
9.9.1 范例说明 453
9.9.2 具体实现 453
9.9.3 范例技巧—牢记开发前的准备
工作 453
9.10 获取相机Camera中的图片并缩放 453
9.10.1 范例说明 454
9.10.2 具体实现 454
9.10.3 范例技巧—图像选择器的重要
功能 457
9.11 选择相机中的照片(Swift版) 457
9.11.1 范例说明 457
9.11.2 具体实现 457
9.11.3 范例技巧—使用图像选择器的通用流程 459
9.12 实现一个多媒体的应用程序 459
9.12.1 范例说明 459
9.12.2 具体实现 460
9.12.3 范例技巧—系统总体规划 462
9.13 实现一个音乐播放器(Swift版) 462
9.13.1 范例说明 462
9.13.2 具体实现 463
9.13.3 范例技巧—使用AV Foundation框架前的准备 463
9.14 实现一个美观的音乐播放器
(Swift版) 463
9.14.1 范例说明 464
9.14.2 具体实现 464
9.14.3 范例技巧—使用AV音频播放器的通用流程 465
9.15 实现视频播放和调用照片库
功能(Swift版) 466
9.15.1 范例说明 466
9.15.2 具体实现 466
9.15.3 范例技巧—总结Media Player框架中的常用类 467
9.16 播放指定的MP4视频(Swift版) 467
9.16.1 范例说明 468
9.16.2 具体实现 468
9.16.3 范例技巧—使用多媒体播放器前的准备 468
9.17 播放和暂停指定的MP3(Swift版) 468
9.17.1 范例说明 468
9.17.2 具体实现 468
9.17.3 范例技巧—总结使用AV录音机的基本流程 470
9.18 实现一个图片浏览器(Swift版) 470
9.18.1 范例说明 470
9.18.2 具体实现 471
9.18.3 范例技巧—图像选择器控制器
委托 472
9.19 实现一个智能图片浏览器(Swift版) 473
9.19.1 范例说明 473
9.19.2 具体实现 473
9.19.3 范例技巧—UIImagePickerController在iPhone和iPad上的区别 475
第10章 互联网应用实战 476
10.1 调用JavaScript脚本 476
10.1.1 范例说明 476
10.1.2 具体实现 476
10.1.3 范例技巧—Web视图的作用 477
10.2 动态改变字体的大小 477
10.2.1 范例说明的 477
10.2.2 具体实现 478
10.2.3 范例技巧—总结Web视图可以实现的文件 478
10.3 实现一个迷你浏览器工具 479
10.3.1 范例说明 479
10.3.2 具体实现 479
10.3.3 范例技巧—总结使用Web视图的基本流程 480
10.4 加载显示指定的网页(Swift版) 480
10.4.1 范例说明 480
10.4.2 具体实现 481
10.4.3 范例技巧—显示内容的另一种解决方案 481
10.5 使用可滚动视图控件(Swift版) 482
10.5.1 范例说明 482
10.5.2 具体实现 482
10.5.3 范例技巧—本项目规划 483
10.6 使用Message UI发送邮件(Swift版) 483
10.6.1 范例说明 483
10.6.2 具体实现 483
10.6.3 范例技巧—总结使用框架Message UI的基本流程 484
10.7 开发一个Twitter客户端(Swift版) 485
10.7.1 范例说明 485
10.7.2 具体实现 485
10.7.3 范例技巧—总结使用Twitter框架的基本流程 486
10.8 联合使用地址簿、电子邮件、Twitter和地图(Swift版) 487
10.8.1 范例说明 487
10.8.2 具体实现 487
10.8.3 范例技巧—总结为iOS项目添加第三方框架的方法 488
10.9 获取网站中的照片信息(Swift版) 489
10.9.1 范例说明 489
10.9.2 具体实现 489
10.9.3 范例技巧—手机和云平台之间传递的通用数据格式 492
10.10 快速浏览不同的站点(Swift版) 492
10.10.1 范例说明 493
10.10.2 具体实现 493
10.10.3 范例技巧—控制屏幕中的网页的
方法 493
10.11 实现一个网页浏览器(Swift版) 493
10.11.1 范例说明 493
10.11.2 具体实现 493
10.11.3 范例技巧—在网页中实现触摸处
理的方法 494
10.12 自动缓存网页数据 494
10.12.1 范例说明 494
10.12.2 具体实现 494
10.12.3 范例技巧—总结UIWebView中主
要的委托方法 495
10.13 实现一个Web浏览器 495
10.13.1 范例说明 495
10.13.2 具体实现 495
10.13.3 范例技巧—MIME在浏览器中的
作用 498
10.14 实现Cookie功能的登录系统
(Swift版) 499
10.14.1 范例说明 499
10.14.2 具体实现 499
10.14.3 范例技巧—本实例的两个
难点 501
10.15 加载指定的网页文件 501
10.15.1 范例说明 501
10.15.2 具体实现 501
10.15.3 范例技巧—总结UIWebView的
优点 502
10.16 实现Objective-C和JS桥接功能 503
10.16.1 范例说明 503
10.16.2 具体实现 503
10.16.3 范例技巧—iOS中最常用的桥接
开发 504
10.17 实现微信样式的导航效果 505
10.17.1 范例说明 505
10.17.2 具体实现 505
10.17.3 范例技巧—加载本地文本文件的
通用方法 507
10.18 实现和JavaScript的交互 508
10.18.1 范例说明 508
10.18.2 具体实现 508
10.18.3 范例技巧—总结UIWebViewDelegate的代理方法 509
10.19 浏览网页返回时显示“关闭”按钮 509
10.19.1 范例说明 509
10.19.2 具体实现 510
10.19.3 范例技巧—UIWebView加载PDF
文件的方法 511
第11章 地图定位应用实战 512
11.1 定位显示当前的位置信息(Swift版) 512
11.1.1 范例说明 512
11.1.2 具体实现 512
11.1.3 范例技巧—iOS实现位置监听功能的技术方案 515
11.2 在地图中定位当前的位置
信息(Swift版) 516
11.2.1 范例说明 516
11.2.2 具体实现 516
11.2.3 范例技巧—实现定位功能
需要的类 517
11.3 创建一个支持定位的应用
程序(Swift版) 517
11.3.1 范例说明 517
11.3.2 具体实现 518
11.3.3 范例技巧—规划变量和连接 519
11.4 定位当前的位置信息 519
11.4.1 范例说明 519
11.4.2 具体实现 519
11.4.3 范例技巧—总结实现位置定位的基本流程 520
11.5 在地图中绘制导航线路 522
11.5.1 范例说明 522
11.5.2 具体实现 522
11.5.3 范例技巧—Map Kit的作用 524
11.6 实现一个轨迹记录仪(Swift版) 524
11.6.1 范例说明 524
11.6.2 具体实现 524
11.6.3 范例技巧—总结Map Kit的
开发流程 528
11.7 实现一个位置跟踪器(Swift版) 529
11.7.1 范例说明 529
11.7.2 具体实现 529
11.7.3 范例技巧—地图视图区域的常见
操作 531
11.8 在地图中搜索和选择附近
位置(Swift版) 532
11.8.1 范例说明 532
11.8.2 具体实现 532
11.8.3 范例技巧—总结给地图添加
标注的方法 533
11.9 获取当前的经度和纬度 534
11.9.1 范例说明 534
11.9.2 具体实现 534
11.9.3 范例技巧—总结市面中常用的坐标
系统 534
11.10 在地图中添加大头针提示 535
11.10.1 范例说明 535
11.10.2 具体实现 535
11.10.3 范例技巧—删除地图标注的
方法 536
11.11 在地图中标注移动的飞机 537
11.11.1 范例说明 537
11.11.2 具体实现 537
11.11.3 范例技巧—总结获取当前位置的
基本方法 538
11.12 在地图中定位当前位置(Swift版) 539
11.12.1 范例说明 539
11.12.2 具体实现 539
11.12.3 范例技巧—总结位置管理器
委托 541
11.13 实现一个位置管理器(Swift版) 542
11.13.1 范例说明 542
11.13.2 具体实现 542
11.13.3 范例技巧—处理定位错误的
方法 544
第12章 传感器、触摸和交互实战 545
12.1 实现界面自适应(Swift版) 545
12.1.1 范例说明 545
12.1.2 具体实现 545
12.1.3 范例技巧—多点触摸和手势识别
基础 546
12.2 创建可旋转和调整大小的界面 547
12.2.1 范例说明 547
12.2.2 具体实现 547
12.2.3 范例技巧—测试旋转的方法 548
12.3 在旋转时调整控件 549
12.3.1 范例说明 549
12.3.2 具体实现 549
12.3.3 范例技巧—当Interface Builder不满足需求时的解决方案 551
12.4 管理横向和纵向视图(Swift版) 551
12.4.1 范例说明 551
12.4.2 具体实现 552
12.4.3 范例技巧—视图太复杂时的
解决方案 553
12.5 实现屏幕视图的自动切换(Swift版) 553
12.5.1 范例说明 553
12.5.2 具体实现 553
12.5.3 范例技巧—界面自动旋转的基本
知识 554
12.6 使用触摸的方式移动当前视图 554
12.6.1 范例说明 554
12.6.2 具体实现 554
12.6.3 范例技巧—总结常用的手势
识别类 555
12.7 触摸挪动彩色方块(Swift版) 555
12.7.1 范例说明 555
12.7.2 具体实现 555
12.7.3 范例技巧—触摸识别的意义 559
12.8 实现一个手势识别器 559
12.8.1 范例说明 559
12.8.2 具体实现 559
12.8.3 范例技巧—规划本实例的变量和
连接 559
12.9 识别手势并移动屏幕中的
方块(Swift版) 560
12.9.1 范例说明 560
12.9.2 具体实现 560
12.9.3 范例技巧—iOS触摸处理的
基本含义 562
12.10 使用Force Touch 563
12.10.1 范例说明 563
12.10.2 具体实现 563
12.10.3 范例技巧—Force Touch介绍 564
12.11 启动Force Touch触控面板 564
12.11.1 范例说明 564
12.11.2 具体实现 564
12.11.3 范例技巧—总结常用的
Force Touch API 564
12.12 实现界面旋转的自适应
处理(Swift版) 565
12.12.1 范例说明 565
12.12.2 具体实现 565
12.12.3 范例技巧—实现界面自动旋转的
基本方法 566
12.13 实现手势识别(Swift版) 566
12.13.1 范例说明 566
12.13.2 具体实现 566
12.13.3 范例技巧—总结iOS的屏幕
触摸操作 567
12.14 识别手势并移动图像(Swift版) 567
12.14.1 范例说明 568
12.14.2 具体实现 568
12.14.3 范例技巧—如何调整框架 568
12.15 实现一个绘图板系统(Swift版) 569
12.15.1 范例说明 569
12.15.2 具体实现 569
12.15.3 范例技巧—如何切换视图 571
12.16 使用Force Touch技术(Swift版) 571
12.16.1 范例说明 571
12.16.2 具体实现 571
12.16.3 范例技巧—挖掘Force Touch技术
的方法 572
12.17 实现Touch ID身份验证 573
12.17.1 范例说明 573
12.17.2 具体实现 573
12.17.3 范例技巧—什么是Touch ID 574
12.18 演示触摸拖动操作 574
12.18.1 范例说明 574
12.18.2 具体实现 574
12.18.3 范例技巧—总结接收触摸的
方法 575
12.19 实现一个绘图板系统(Swift版) 576
12.19.1 范例说明 576
12.19.2 具体实现 576
12.19.3 范例技巧—实现多点触摸的
方法 578
12.20 实现手势识别 578
12.20.1 范例说明 578
12.20.2 具体实现 578
12.20.3 范例技巧—总结iOS触摸处理
事件 579
12.21 实现单击手势识别器 580
12.21.1 范例说明 580
12.21.2 具体实现 580
12.21.3 范例技巧—总结触摸和响应链
操作 581
12.22 获取单击位置的坐标 581
12.22.1 范例说明 582
12.22.2 具体实现 582
12.22.3 范例技巧—总结iOS中的手势
操作 584
第13章 硬件设备操作实战 586
13.1 检测设备的倾斜和旋转 586
13.1.1 范例说明 586
13.1.2 具体实现 586
13.1.3 范例技巧—本实例的应用程序
逻辑 587
13.2 使用Motion传感器(Swift版) 587
13.2.1 范例说明 587
13.2.2 具体实现 587
13.2.3 范例技巧—加速剂和陀螺仪的
作用 588
13.3 检测设备的朝向 588
13.3.1 范例说明 588
13.3.2 具体实现 589
13.3.3 范例技巧—需要解决的两个
问题 589
13.4 传感器综合练习(Swift版) 589
13.4.1 范例说明 590
13.4.2 具体实现 590
13.4.3 范例技巧—分析核心文件的
功能 592
13.5 使用Touch ID认证 592
13.5.1 范例说明 592
13.5.2 具体实现 593
13.5.3 范例技巧—Touch ID的官方
资料 594
13.6 使用Touch ID密码和指纹认证 594
13.6.1 范例说明 594
13.6.2 具体实现 594
13.6.3 范例技巧—总结开发Touch ID应用
程序的基本步骤 598
13.7 Touch ID认证的综合演练 599
13.7.1 范例说明 599
13.7.2 具体实现 599
13.7.3 范例技巧—指纹识别的
安全性 601
13.8 使用CoreMotion传感器(Swift版) 601
13.8.1 范例说明 601
13.8.2 具体实现 601
13.8.3 范例技巧—硬件设备的
必要性 604
13.9 获取加速度的值(Swift版) 604
13.9.1 范例说明 604
13.9.2 具体实现 604
13.9.3 范例技巧—总结使用加速计的
流程 605
13.10 演示CoreMotion的加速旋转功能 606
13.10.1 范例说明 606
13.10.2 具体实现 606
13.10.3 范例技巧—总结
UIAccelerometer类 607
13.11 CoreMotion远程测试(Swift版) 609
13.11.1 范例说明 609
13.11.2 具体实现 609
13.11.3 范例技巧—陀螺仪的工作
原理 612
第14章 游戏应用实战 613
14.1 开发一个SpriteKit游戏 613
14.1.1 范例说明 613
14.1.2 具体实现 613
14.1.3 范例技巧—SpriteKit的优点和
缺点 621
14.2 开发一个四子棋游戏(Swift版) 622
14.2.1 范例说明 622
14.2.2 具体实现 622
14.2.3 范例技巧—SpriteKit、Cocos2D、
Cocos2D-X和Unity的选择 626
14.3 使用SpriteKit框架 626
14.3.1 范例说明 626
14.3.2 具体实现 627
14.3.3 范例技巧—总结开发游戏的
流程 628
14.4 开发一个SpriteKit游戏(Swift版) 628
14.4.1 范例说明 629
14.4.2 具体实现 629
14.4.3 范例技巧—一款游戏产品受到的
限制 631
14.5 开发一个小球游戏(Swift版) 631
14.5.1 范例说明 631
14.5.2 具体实现 632
14.5.3 范例技巧—游戏的大纲策划 634
第15章 WatchOS 2开发实战 635
15.1 实现Apple Watch界面布局 635
15.1.1 范例说明 635
15.1.2 具体实现 635
15.1.3 范例技巧—Apple Watch介绍 638
15.2 演示Apple Watch的日历事件 639
15.2.1 范例说明 639
15.2.2 具体实现 639
15.2.3 范例技巧—总结Apple Watch的3大核心功能 641
15.3 在手表中控制小球的移动 641
15.3.1 范例说明 642
15.3.2 具体实现 642
15.3.3 范例技巧—学习WatchOS 2开发的官方资料 643
15.4 实现一个Watch录音程序 643
15.4.1 范例说明 643
15.4.2 具体实现 644
15.4.3 范例技巧—WatchKit的核心
功能 646
15.5 综合性智能手表管理系统(Swift版) 647
15.5.1 范例说明 647
15.5.2 具体实现 647
15.5.3 范例技巧—快速搭建WatchKit开发环境 652
15.6 移动视频播放系统(Swift版) 653
15.6.1 范例说明 653
15.6.2 具体实现 653
15.6.3 范例技巧—总结WatchKit架构 655
第16章 开发框架实战 657
16.1 实现一个HomeKit控制程序 657
16.1.1 范例说明 657
16.1.2 具体实现 657
16.1.3 范例技巧—苹果HomeKit如何牵动全国智能硬件格局 660
16.2 实现一个智能家居控制程序
(Swift版) 660
16.2.1 范例说明 660
16.2.2 具体实现 661
16.2.3 范例技巧—HomeKit给开发者和厂家提供的巨大机会 663
16.3 检测一天消耗掉的能量 664
16.3.1 范例说明 664
16.3.2 具体实现 664
16.3.3 范例技巧—HomeKit应用程序的
层次模型 669
16.4 心率检测(Swift版) 669
16.4.1 范例说明 670
16.4.2 具体实现 670
16.4.3 范例技巧—HomeKit程序架构
模式 673
第17章 移动Web应用实战 675
17.1 在 iOS模拟器中测试网页 675
17.1.1 范例说明 675
17.1.2 具体实现 675
17.1.3 范例技巧—移动设备将占据未来计算机市场 677
17.2 使用页面模板 677
17.2.1 范例说明 677
17.2.2 具体实现 677
17.2.3 范例技巧—组件的增强样式 678
17.3 使用多页面模板 678
17.3.1 范例说明 678
17.3.2 具体实现 678
17.3.3 范例技巧—设置内部页面的
标题 679
17.4 使用Ajax驱动导航 679
17.4.1 范例说明 679
17.4.2 具体实现 680
17.4.3 范例技巧—分析jQuery Mobile的
处理流程 680
17.5 实现基本对话框效果 681
17.5.1 范例说明 681
17.5.2 具体实现 681
17.5.3 范例技巧—使用操作表 682
17.6 实现警告框 683
17.6.1 范例说明 683
17.6.2 具体实现 683
17.6.3 范例技巧—使用多选项
操作表 684
17.7 实现竖屏和横屏自适应效果 684
17.7.1 范例说明 684
17.7.2 具体实现 684
17.7.3 范例技巧—WebKit的媒体扩展 685
17.8 实现全屏显示效果 685
17.8.1 范例说明 685
17.8.2 具体实现 685
17.8.3 范例技巧—可以用于定位页眉的
3种样式 686
17.9 实现只有图标的按钮效果 687
17.9.1 范例说明 687
17.9.2 具体实现 687
17.9.3 范例技巧—在页眉中使用
分段控件 688
17.10 实现回退按钮效果 688
17.10.1 范例说明 688
17.10.2 具体实现 689
17.10.3 范例技巧—在页眉中添加回退
链接 690
17.11 在表单中输入文本 690
17.11.1 范例说明 690
17.11.2 具体实现 690
17.11.3 范例技巧—将输入字段与其语义
类型关联 692
17.12 动态输入文本 692
17.12.1 范例说明 692
17.12.2 具体实现 692
17.12.3 范例技巧—使用选择菜单 693
17.13 实现一个自定义选择菜单效果 693
17.13.1 范例说明 693
17.13.2 具体实现 694
17.13.3 范例技巧—占位符选项 695
17.14 使用内置列表 695
17.14.1 范例说明 695
17.14.2 具体实现 695
17.14.3 范例技巧—使用列表分割线 696
17.15 实现缩略图列表效果 696
17.15.1 范例说明 696
17.15.2 具体实现 696

17.15.3 范例技巧—使用拆分按钮
列表 698
17.16 实现可折叠设置效果 698
17.16.1 范例说明 698
17.16.2 具体实现 698
17.16.3 范例技巧—使用CSS设置样式 700
17.17 使用网络连接API 700
17.17.1 范例说明 700
17.17.2 具体实现 700
17.17.3 范例技巧—使用指南针API 701
17.18 预加载一个网页 702
17.18.1 范例说明 702
17.18.2 具体实现 702
17.18.3 范例技巧—Pagebeforechange
事件 702
17.19 开发一个Web版的电话簿系统 703
17.19.1 范例说明 703
17.19.2 具体实现 703
17.19.3 范例技巧—使用页面初始化事件 Page initialization events 707