《iOS项目开发全程实录》PDF下载

  • 购买积分:20 如何计算积分?
  • 作  者:管蕾编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2017
  • ISBN:9787115433572
  • 页数:707 页
图书介绍:本书先讲解最新的Swift语言的基本知识和高级特性,然后通过实例全面讲解了iOS9 案例开发的全过程,包括智能家居、健康应用、苹果手表、游戏开发等领域。每一个实例都具有极强的代表性,能够很好的演示每一个知识点的具体用法。

第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.11 使用头文件实现特殊数学运算 84

3.11.1 范例说明 84

3.11.2 具体实现 84

3.11.3 范例技巧——恒等“=”和不恒等“!=” 85

3.12 使用三元条件运算符判断变量值 85

3.12.1 范例说明 85

3.12.2 具体实现 85

3.12.3 范例技巧——避免在一个组合语句中使用多个三元条件运算符 86

3.13 使用闭范围运算符 86

3.13.1 范例说明 86

3.13.2 具体实现 86

3.13.3 范例技巧——使用半闭区间运算符 86

3.14 使用括号设置运算优先级 87

3.14.1 范例说明 87

3.14.2 具体实现 87

3.14.3 范例技巧——建议在可以让代码变清晰的地方加一个括号 87

3.15 使用左移/右移运算符 87

3.15.1 范例说明 87

3.15.2 具体实现 88

3.15.3 范例技巧——左移运算符和右移运算符的实质 88

3.16 使用溢出运算符 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与FoundationNSString的无缝桥接 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 范例技巧——<math.h>头文件中的常用函数 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 范例技巧——何时释放releaseUIButton 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和CoreGraphics都可以绘图 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 范例技巧——官方建议使用AVFoundation框架 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 范例技巧——总结MediaPlayer框架中的常用类 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 范例技巧——总结使用框架MessageUI的基本流程 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 范例技巧——总结MapKit的开发流程 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 具