描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302448662丛书名: 清华社“视频大讲堂
“网络开发视频大讲堂”丛书系清华社“视频大讲堂”重点大系之一。该大系包括多个子系列,每个子系列的图书在其同品种的图书中销售名列前茅,其中:
4个品种荣获“全行业畅销品种”
1个品种荣获2012年清华大学出版社“专业热销书”一等奖
绝大多数品种在“计算机零售图书排行榜”同品种排行中名列前茅
截至目前该大系累计销售超过55万册
该大系已成为近年来清华社计算机专业基础类零售图书热销的品牌之一
“网络开发视频大讲堂”系列作为清华社“视频大讲堂”大系的子系列之一,继承和创新了清华社“视频大讲堂”大系的编写模式、写作风格和优良品质。本书突出了以下内容:
200节大型高清同步视频演示讲解,可反复观摩,让学习更为快捷、高效
102个典型中小实例,通过实例学习更深入,更有趣,更有动力
4个综合实战案例,展现工作过程,积累工作经验
★iOS软件代码规范1部,Objective-C编码规范1部,iOS参考资料5类,iOS功能代码参考16类,iOS面试题5部分,iOS开发工具集合网页文档1部,iOS开发类库网页文档1部,iOS资源网页文档1部
★实用网页模板380套,网页配色辞典1部,协调色配色参考7套,网页色彩搭配图43张,不同色系实物配色卡540张,实用配色参考18部,网页设计素材13类
★HTML工具集6部,CSS工具集8部,JavaScript工具集16部,PS帮助手册1部
★HTML应用案例360个,CSS3应用案例510个,JavaScript jQuery应用案例900个,网页交互设计案例1000个
★Web前端开发规范手册1部,JavaScript知识点思维导图10张,HTML CSS面试题351道,JavaScript面试题685道,网页欣赏
《iOS开发从入门到精通》内容翔实、结构清晰、循序渐进,基础知识与案例实战紧密结合,既可作为iOS初学者的入门教材,也适合中高级用户对新技术做进一步的学习和参考。
第1章
iOS基础
视频讲解:23分钟
1.1 iOS发展历史
1.2 iOS特性
1.3 iOS架构
1.3.1 Cocoa Touch层
1.3.2 媒体层
1.3.3 Core Services层
1.3.4 Core OS层
1.4 Objective-C概述
1.5 比较iOS和Mac OS
1.5.1 UIKit与AppKit的对比
1.5.2 Foundation框架的差异
1.5.3 其他框架的改变
1.6 iOS开发环境和工具
1.6.1 了解Xcode
1.6.2 Xcode导航面板
1.6.3 Xcode检查器面板
1.6.4 Xcode库面板
1.6.5 使用帮助
1.7 使用Xcode
1.7.1 案例:编写个Objective-C程序
1.7.2 案例:创建个项目
1.8 小结
第2章
数据类型和运算符
视频讲解:88分钟
2.1 数据类型分类
2.2 简单数据类型
2.2.1 整型
2.2.2 案例:输出格式字符
2.2.3 浮点型
2.2.4 字符型
2.2.5 案例:定义字符串
2.2.6 枚举型
2.2.7 布尔型
2.3 类型转换
2.3.1 案例:自动类型转换
2.3.2 案例:强制类型转换
2.3.3 案例:自动提升
2.4 运算符
2.4.1 运算符分类
2.4.2 运算优先级
2.4.3 算术运算符
2.4.4 赋值运算符
2.4.5 位运算符
2.4.6 比较运算符
2.4.7 逻辑运算符
2.4.8 逗号运算符
2.4.9 条件运算符
2.5 小结
第3章
控制语句
视频讲解:44分钟
3.1 条件语句
3.1.1 if语句
3.1.2 案例:分支语句应用
3.1.3 switch语句
3.2 循环语句
3.2.1 while语句
3.2.2 do-while语句
3.2.3 for语句
3.2.4 案例:for语句应用
3.2.5 案例:嵌套循环
3.3 控制语句
3.3.1 break语句
3.3.2 continue语句
3.3.3 return语句
3.3.4 案例:使用goto语句
3.4 预处理命令
3.4.1 宏定义
3.4.2 运算符
3.4.3 #import语句
3.4.4 条件编译
3.5 小结
第4章
C语言特性
视频讲解:122分钟
4.1 数组
4.1.1 定义数组
4.1.2 初始化数组
4.1.3 使用数组
4.1.4 定义多维数组
4.1.5 初始化多维数组
4.1.6 使用字符数组
4.1.7 案例实战
4.2 函数
4.2.1 定义函数
4.2.2 声明函数
4.2.3 函数类型
4.2.4 函数参数
4.2.5 函数返回值
4.2.6 案例实战
4.3 块
4.3.1 定义块
4.3.2 块作用域
4.3.3 使用块变量类型
4.4 结构
4.4.1 定义结构
4.4.2 使用typedef
4.4.3 初始化结构
4.4.4 使用结构体数组
4.4.5 嵌套结构
4.5 指针
4.5.1 认识指针
4.5.2 定义指针变量
4.5.3 指针的基本运算
4.5.4 指针变量作为函数参数
4.5.5 对象和指针的关系
4.6 数组和指针
4.6.1 指向数组的指针变量
4.6.2 指针运算
4.6.3 案例实战
4.7 案例应用
4.7.1 使用字符串指针
4.7.2 使用函数指针
4.8 小结
第5章
类
视频讲解:107分钟
5.1 定义类
5.1.1 认识类
5.1.2 接口
5.1.3 实现
5.1.4 案例:定义类
5.2 使用类
5.2.1 实例化
5.2.2 指针
5.2.3 self
5.2.4 id类型
5.2.5 类名的使用
5.2.6 类的比较
5.3 变量
5.3.1 局部变量
5.3.2 全局变量
5.3.3 实例变量
5.3.4 静态变量
5.3.5 变量的存储类别
5.3.6 案例:定义单例类
5.3.7 案例:定义类变量
5.4 属性
5.4.1 属性的声明
5.4.2 属性的实现
5.4.3 属性类型和相关函数
5.4.4 属性类型编码
5.4.5 属性重声明
5.4.6 子类中的属性
5.4.7 案例:使用封装
5.4.8 案例:使用访问控制符
5.4.9 案例:合成存取
5.4.10 案例:点语法存取
5.5 方法
5.5.1 定义方法
5.5.2 方法的所属性
5.5.3 案例:设计可变形参的方法
5.6 继承
5.6.1 继承实例变量
5.6.2 方法的继承
5.6.3 方法的重写
5.6.4 类别和扩展
5.6.5 案例:类继承
5.6.6 案例:重写
5.6.7 案例:使用super关键字
5.7 异常处理
5.7.1 启用异常处理
5.7.2 异常处理
5.7.3 捕捉不同类型的异常
5.7.4 抛出异常
5.8 类型
5.8.1 静态指定类型
5.8.2 类型的自查
5.9 根类
5.9.1 NSObject简介
5.9.2 根类和协议
5.9.3 根类方法
5.9.4 根类接口规范
5.9.5 根类实例方法和类方法
5.10 小结
第6章
消息和协议
6.1 消息
6.1.1 定义消息
6.1.2 发送消息
6.1.3 接收实例变量
6.1.4 获取方法地址
6.1.5 objc_msgSend()函数
6.1.6 使用隐藏的参数
6.1.7 消息转发
6.1.8 消息转发与多重继承
6.1.9 消息代理对象
6.1.10 消息转发与类继承
6.1.11 多态性
6.1.12 动态绑定
6.1.13 解析动态方法
6.1.14 动态加载
6.1.15 “.”语法格式
6.2 协议
6.2.1 预定义声明接口
6.2.2 预定义方法
6.2.3 声明接口
6.2.4 非层级相似性
6.2.5 正式协议
6.2.6 非正式协议
6.2.7 协议对象
6.2.8 采用协议
6.2.9 服从协议
6.2.10 类型校验
6.2.11 嵌套协议
6.2.12 引用其他协议
6.3 小结
第7章
对象
7.1 创建对象
7.1.1 分配对象
7.1.2 初始化对象
7.1.3 dealloc方法
7.1.4 类工厂方法
7.2 对象动态类型
7.3 对象可变性
7.3.1 可变或不可变对象
7.3.2 用可变对象编程
7.4 对象通信
7.4.1 面向对象程序中的通信
7.4.2 IBoutlet变量
7.4.3 委托和数据源
7.4.4 目标-动作机制
7.4.5 绑定
7.4.6 通告
7.5 使用对象
7.5.1 对象所有权策略
7.5.2 保留计数
7.5.3 自动释放
7.5.4 共享对象的有效性
7.5.5 存取方法
7.5.6 回收对象
7.5.7 通过引用返回的对象
7.6 小结
第8章
Foundation框架基础
视频讲解:133分钟
8.1 认识Foundation框架
8.2 使用Foundation框架
8.3 数字类型
8.3.1 数字类型类NSNumber
8.3.2 比较int、NSInteger、NSUInteger和NSNumber
8.4 字符串类型
8.4.1 不可变字符串类NSString
8.4.2 可变字符串类NSMutableString
8.4.3 案例实战
8.5 日期类型
8.5.1 日期类型类NSDate
8.5.2 NSCalendar和NSDateComponents
8.5.3 案例实战
8.6 数组类型
8.6.1 不可变数组类NSArray
8.6.2 可变数组类NSMutableArray
8.6.3 多维数组
8.6.4 案例:操作数组
8.6.5 案例:操作元素
8.6.6 案例:数组排序
8.6.7 案例:遍历数组
8.6.8 案例:快速枚举
8.6.9 案例:可变数组
8.7 字典类型
8.7.1 不可变字典类NSDictionary
8.7.2 可变字典类NSMutableDictionary
8.7.3 案例:使用字典
8.7.4 案例:字典排序
8.7.5 案例:字典过滤
8.7.6 案例:使用可变字典
8.8 案例实战:集合类型
8.8.1 使用NSSet
8.8.2 检测NSSet重复值
8.8.3 可变集合
8.8.4 计数集合
8.8.5 有序集合
8.9
小结
第9章
iOS应用开发核心
9.1 iOS应用架构
9.1.1 生命周期
9.1.2 主函数
9.1.3 应用委托
9.1.4 nib文件
9.1.5 事件处理周期
9.1.6 基本设置模式
9.2 运行环境处理机制
9.2.1 快速启动
9.2.2 安全处理
9.2.3 内存处理
9.2.4 节电处理
9.3 程序包
9.3.1 信息属性
9.3.2 程序图标和启动图像
9.4 定制行为
9.4.1 景观模式启动
9.4.2 与其他程序通信
9.4.3 URL模式
9.4.4 处理URL请求
9.4.5 偏好设置
9.4.6 关闭锁定
9.5 键盘管理
9.5.1 接收键盘通告
9.5.2 显示键盘
9.5.3 取消键盘
9.5.4 移动键盘
9.6 国际化
9.7 优化处理
9.7.1 不要阻塞主线程
9.7.2 有效使用内存
9.7.3 减少内存印迹
9.7.4 恰当分配内存
9.7.5 浮点运算
9.7.6 减少电力消耗
9.7.7 代码优化
9.8 小结
第10章
iOS开发入门
视频讲解:63分钟
10.1 熟悉iOS项目
10.1.1 文件结构
10.1.2 新建xib界面文件
10.1.3 认识xib界面
10.1.4 添加控件
10.1.5 编辑控件属性
10.1.6 UIView属性
10.1.7 UILabel属性
10.2 iOS运行机制
10.2.1 了解MVC
10.2.2 入口函数
10.2.3 应用程序委托
10.2.4 视图控制器
10.3 事件处理机制
10.3.1 获取控件
10.3.2 事件处理
10.4 故事板
10.5 案例实战
10.5.1 动态更新文本
10.5.2 添加和删除控件
10.5.3 设计跟随手指的小球
10.5.4 设计应用项目图标
10.5.5 设计欢迎界面
10.6 小结
第11章
窗口和视图
11.1 认识窗口和视图
11.1.1 窗口
11.1.2 视图
11.1.3 视图控制器
11.2 视图架构
11.2.1 视图交互模型
11.2.2 视图渲染架构
11.2.3 Core Animation
11.2.4 视图的层
11.2.5 动画支持
11.2.6 视图坐标系统
11.2.7 边框、边界和中心
11.2.8 坐标系统变换
11.2.9 内容模式与比例缩放
11.2.10 自动尺寸调整
11.3 创建和管理视图层次
11.3.1 视图层次
11.3.2 创建视图对象
11.3.3 添加和移除子视图
11.3.4 坐标转换
11.3.5 标识视图
11.4 动态控制视图
11.4.1 实现视图动画
11.4.2 配置动画的参数
11.4.3 配置动画的委托
11.4.4 响应布局的变化
11.4.5 重画视图的内容
11.4.6 隐藏视图
11.5 创建定制视图
11.5.1 初始化定制视图
11.5.2 描画视图内容
11.5.3 响应事件
11.5.4 清理视图对象
11.6 小结
第12章
视图控制器
视频讲解:43分钟
12.1 视图控制器基础
12.1.1 视图控制器的功能
12.1.2 屏幕、窗口和视图元素
12.1.3 视图管理机制
12.1.4 视图控制器分类
12.1.5 内容展示方式
12.1.6 视图控制器混合应用
12.2 视图控制器生命周期
12.2.1 初始化视图
12.2.2 加载和卸载视图
12.3 标准视图控制器
12.3.1 标准视图控制器概述
12.3.2 使用标准视图控制器
12.4 分割视图控制器
12.4.1 分割视图控制器概述
12.4.2 使用分割视图控制器
12.5 导航控制器
12.5.1 导航控制器概述
12.5.2 使用导航控制器
12.6 选项卡控制器
12.6.1 选项卡控制器概述
12.6.2 使用选项卡控制器
12.7 页视图控制器
12.7.1 页视图控制器概述
12.7.2 使用页视图控制器
12.8 小结
第13章
事件
13.1 触摸事件
13.1.1 触摸模型
13.1.2 触摸与事件
13.1.3 事件传递
13.1.4 事件响应过程
13.1.5 事件处理方法
13.1.6 案例:处理多点触摸事件
13.1.7 案例:检测碰擦手势
13.1.8 案例:处理复杂多点触摸序列
13.2 运动事件
13.3 复制、剪切和粘贴
13.3.1 认识粘贴板
13.3.2 数据表示
13.3.3 选择菜单
13.3.4 复制和剪切
13.3.5 粘贴
13.3.6 消除菜单
13.4 小结
第14章
使用控件(上)
视频讲解:117分钟
14.1 UIKit概述
14.1.1 视图分类
14.1.2 应用界面构成
14.1.3 UIView视图
14.1.4 UIControl控件
14.2 按钮
14.2.1 添加按钮
14.2.2 案例:定义按钮
14.2.3 案例:配合使用标签和按钮
14.3 文本框
14.3.1 添加文本框
14.3.2 案例:设计登录表单
14.3.3 案例:关闭虚拟键盘
14.4 多行文本
14.4.1 添加多行文本框
14.4.2 案例:设计内容简介表单
14.4.3 案例:设计导航按钮控制虚拟键盘
14.4.4 案例:自定义虚拟键盘键
14.4.5 案例:自定义快捷编辑菜单
14.5 开关按钮
14.5.1 添加开关按钮
14.5.2 案例:使用开关按钮控制界面背景
14.6 分段控件
14.6.1 添加分段控件
14.6.2 案例:使用分段控件控制界面背景
14.6.3 案例:动态控制分段控件
14.7 滑块控件
14.7.1 添加滑块控件
14.7.2 案例:设计控件
14.7.3 案例:使用滑块控制透明度
14.8 图像控件
14.8.1 添加图像控件
14.8.2 案例:预览图片
14.8.3 案例:设计幻灯片
14.9 进度条
14.9.1 添加进度条
14.9.2 案例:设计进度条
14.10 活动指示器
14.10.1 添加活动指示器
14.10.2 案例:设计活动指示器和进度条
14.11 警告框
14.11.1 创建警告框
14.11.2 案例:设计警告框
14.12 操作表
14.13 日期选择器
14.13.1 添加日期选择器
14.13.2 案例:设计倒计时
14.14 通用选择器
14.14.1 添加通用选择器
14.14.2 案例:设计单列选择器
14.14.3 案例:自定义选择器视图
14.15 微调器
14.15.1 添加微调器
14.15.2 案例:设计微调器
14.16 网页控件
14.16.1 添加网页控件
14.16.2 案例:设计网页控件
14.17 小结
第15章
使用控件(下)
视频讲解:117分钟
15.1 工具条
15.1.1 添加工具条
15.1.2 案例:设计工具条
15.2 搜索条
15.2.1 添加搜索条
15.2.2 案例:设计搜索条
15.2.3 案例:设计显示列表
15.3 导航条
15.3.1 使用导航条
15.3.2 案例:使用UINavigationController
15.4 表格控制器
15.4.1 表视图概述
15.4.2 添加表格
15.4.3 自定义单元格
15.4.4 案例:设计表格
15.4.5 案例:编辑单元格
15.4.6 案例:编辑表格
15.4.7 案例:表格分区
15.5 标签页
15.5.1 使用UITabBar
15.5.2 案例:设计标签页1
15.5.3 案例:设计标签页2
15.6 页控件
15.6.1 分页控件
15.6.2 案例:使用UIPageControl
15.6.3 案例:使用UIPageViewController
15.7 小结
第16章
移动绘图
视频讲解:35分钟
16.1 基本概念
16.1.1 绘制周期
16.1.2 坐标系统
16.1.3 图形上下文
16.1.4 点和像素
16.1.5 颜色空间
16.1.6 图像格式
16.1.7 定制绘制
16.1.8 绘制性能
16.1.9 图像质量
16.2 Quartz 2D
16.2.1 页面
16.2.2 图形上下文
16.2.3 路径
16.2.4 颜色空间
16.2.5 变换
16.2.6 阴影
16.2.7 梯度
16.2.8 透明层
16.2.9 使用PDF文档
16.3 案例实战
16.3.1 案例:绘制图形
16.3.2 案例:绘制线条
16.3.3 案例:绘制文本
16.3.4 案例:绘制路径
16.3.5 案例:绘制曲线
16.3.6 案例:设计画板
16.4 小结
第17章
动画设计
视频讲解:14分钟
17.1 OpenGL ES
17.1.1 OpenGL ES概述
17.1.2 配置上下文
17.1.3 OpenGL ES绘制
17.2 OpenGL ES应用
17.2.1 项目的创建及设置
17.2.2 上下文的创建
17.2.3 渲染缓存的创建
17.2.4 帧缓存的创建
17.2.5 屏幕的清理
17.2.6 OpenGLView和应用程序委托关联
17.3 Core Animation
17.3.1 层和变换
17.3.2 树层结构
17.3.3 层上下文和层行为
17.3.4 动画
17.3.5 事务
17.3.6 动画层布局
17.4 案例实战
17.4.1 案例:设计过渡动画
17.4.2 案例:设计属性动画
17.4.3 案例:设计路径动画
17.5 小结
第18章
多媒体开发
视频讲解:26分钟
18.1 使用声音
18.1.1 音频编解码
18.1.2 音频回放和录制格式
18.1.3 音频会话
18.1.4 播放音频
18.1.5 通过iPod媒体库访问接口播放媒体项
18.1.6 使用系统声音服务播放短声音及触发震动
18.1.7 通过AVAudioPlayer类轻松播放声音
18.1.8 用音频队列服务播放和控制声音
18.1.9 创建一个音频队列对象
18.1.10 控制回放音量
18.1.11 指示回放音量
18.1.12 同时播放多路声音
18.1.13 使用OpenAL播放和定位声音
18.1.14 录制音频
18.1.15 解析音频流
18.1.16 iOS系统上的音频单元支持
18.1.17 iPhone音频的实践
18.2 使用视频
18.2.1 录制视频
18.2.2 播放视频文件
18.3 案例实战
18.3.1 案例:播放音效
18.3.2 案例:播放音乐
18.3.3 案例:播放视频
18.3.4 案例:录制音频
18.3.5 案例:录制视频
18.4 小结
第19章
设备管理
视频讲解:28分钟
19.1 硬件检测
19.2 配件通信
19.2.1 配件基础
19.2.2 声明协议
19.2.3 连接配件
19.2.4 监控配件
19.3 使用加速计
19.3.1 选择更新频率
19.3.2 分离重力数据
19.3.3 分离实时运动数据
19.3.4 获取设备方向
19.4 使用位置和方向
19.4.1 获取当前位置
19.4.2 获取方向事件
19.5 使用地图
19.5.1 添加地图视图
19.5.2 缩放和移动地图
19.5.3 显示用户当前位置
19.5.4 坐标和像素切换
19.5.5 显示注解
19.5.6 添加和移除注解对象
19.5.7 定义注解视图
19.5.8 创建注解视图
19.5.9 处理注解视图中的事件
19.5.10 获取地标信息
19.6 使用照相机
19.7 使用照片库
19.8 使用邮件
19.9 案例实战
19.9.1 案例:管理通信设备
19.9.2 案例:获取加速度、陀螺仪、磁场数据
19.9.3 案例:获取移动数据
19.9.4 案例:获取位置信息
19.9.5 案例:地图定位
19.10 小结
第20章
文件和数据操作
视频讲解:24分钟
20.1 文件操作
20.1.1 iPhone常用目录
20.1.2 获取程序目录路径
20.1.3 文件更新
20.1.4 文件备份和恢复
20.2 数据读写
20.2.1 文件数据的读写
20.2.2 属性列表数据的读写
20.2.3 用归档器对数据进行读写
20.2.4 将数据写到Documents目录
20.2.5 从Documents目录对数据进行读取
20.2.6 保存状态信息
20.3 SQLite
20.3.1 数据类型
20.3.2 常用函数及返回编码
20.3.3 操作数据库
20.3.4 创建表
20.3.5 操作数据语句
20.3.6 数据查询
20.4 案例实战
20.4.1 案例:使用属性列表设计备忘录
20.4.2 案例:使用SQLite设计单词本
20.5 小结
第21章
综合案例:抢扑克
视频讲解:8分钟
21.1 设计提示框交互项目
21.1.1 使用UIAlertView
21.1.2 保存时间值
21.1.3 添加图像文件
21.2 设计时间差视图控制器
21.2.1 建立NSData、UIImageView对象和IBAction方法
21.2.2 定义UIAlertView和游戏控件属性
21.3 构建扑克游戏控件
21.3.1 添加扑克游戏控件
21.3.2 设置游戏背景视图检查器
21.3.3 设置游戏扑克图像检查器
21.3.4 设置游戏透明按钮检查器
21.4 小结
第22章
综合案例:电子琴
22.1 创建音频工具项目
22.1.1 设置屏幕横向显示
22.1.2 添加背景图像和声音文件
22.1.3 添加音频工具框架
22.1.4 Audio Toolbox框架的作用
22.2 定义电子琴的交互方法
22.2.1 建立音频文件播放方法和播放动态
22.2.2 定义琴键属性值
22.3 构建电子琴界面
22.3.1 设置电子琴视图背景
22.3.2 添加控件
22.3.3 设置电子琴背景图检查器
22.3.4 设置电子琴键的检查器
22.4 小结
第23章
综合案例:吃豆人
视频讲解:7分钟
23.1 创建Utility
Application图像移动按钮项目
23.1.1 添加移动图像和声音文件
23.1.2 添加支持动画和声音文件的框架
23.2 移动图像操作的视图控制器
23.2.1 建立UIImageView、按钮方向操作和音频播放方法
23.2.2 定义图像属性值和方向操作交互
23.3 在Interface
Builder中构建吃豆人主页
23.3.1 构建吃豆人图像和背景图像
23.3.2 构建吃豆人移动按钮
23.4 在Interface
Builder中构建吃豆人简介副页
23.5 小结
第24章
综合案例:打砖块
视频讲解:19分钟
24.1 创建Utility
Application项目
24.1.1 添加打砖块的图像和声音文件
24.1.2 添加框架文件
24.1.3 添加UIImageView控制器
24.1.4 自定义UIImageView视图检查器
24.2 打砖块的MainViewController交互方法
24.2.1 建立游戏分数控件、操作交互和音频播放方法
24.2.2 定义游戏的操作和属性值
24.3 在Interface
Builder内构建BoardView
24.3.1 添加NSObject
24.3.2 设置NSObject身份
24.4 在Interface
Builder中构建打砖块游戏主页
24.5 在Interface
Builder中构建打砖块简介副页
24.6 小结
随着4G网络和移动互联网技术的普及,以苹果iOS为代表的移动应用开发方兴未艾。苹果应用商店影响着各行各业,拥有超过30万个应用可供用户随意下载,每天有成百上千的iOS开发者跟随潮流,各种新奇的应用不断涌现,商店中造就了很多富翁,如果您真的有意从事iOS开发,并想通过好的软件设计让开发工作更加高效,那么就应该阅读本书。
学习新的编程语言绝非易事,一旦学会开发iOS应用程序,就很容易被它优美的设计和结构所打动。这种优美来自设计者的深思熟虑,通过把各种为人熟知或不为人知的设计模式应用到框架的各种基础结构之中,为开发者提供了很好的可扩展性与灵活性。
对于一个多年奋战在移动应用开发线的人来说,iOS开发是一个全新的领域。本书旨在成为iOS开发的权威指南,引导读者了解如何在iOS平台上以Objective-C语言实现开发。
本书特色
·系统的基础知识
全书兼顾理论和技术,以理论为纲,以技术为体,旨在向读者介绍iOS开发相关的知识,并以循序渐进的方式提高学习者的开发技能。读者只需通过24章内容的学习,就能掌握所有iOS基础知识。
·可操作的实战体验
本书通过大量的案例实战,直观引导上机练习。所有的程序都经过作者认真调试,可以直接运行。读者不可能在一夜之间就开发出iOS应用程序,但是只要多加练习,完全可以在几天之内编写出初级应用程序。相信在苹果开发工具上花费的时间越多,创建出激动人心的应用程序的可能性就越大。
·讲解深入浅出
全书很多内容来自编者多年开发的经验。根据iOS开发的实际情况,针对新版本进行内容上的调整。全书实例丰富,讲解到位,代码分析详细,实用性强。作为编程类书籍,免不了有大量的代码,但本书对多数代码都进行了阐释。
·结构完整
本书以iOS开发为主题,由浅入深介绍了整个iOS框架层次,包括Objective-C语言简介、SDK的构成、Foundation框架、UIKit框架、QuartzCore、Core Animation以及其他第三方扩展框架等。
·同步视频讲解,海量资源赠送
本书光盘中包含书中范例的同步视频讲解、源文件及大量参考素材(由于光盘容量有限,部分资源需登陆出版社网站按指定地址下载)。扫描图书封底的二维码,可在手机中在线学习教学视频。
本书内容
本书共24章,具体结构划分如下。
第1部分:Objective-C语言部分,包括第1~7章。这部分内容主要介绍了Objective-C相关基础知识,包括iOS开发基础,Objective-C基本语法、数据类型、运算符、语句、C特性、类、协议和对象。
第2部分:iOS部分,包括第8~20章。这部分内容主要讲解iOS开发相关框架和各种应用主题。主要内容包括Foundation框架、iOS开发入门、窗口和视图、视图控制器、事件、iOS控件详解、绘图、动画、多媒体、设备管理、文件操作、数据库操作等。
第3部分:案例部分,包括第21~24章。这部分内容主要通过4个案例具体演示iOS应用程序开发的过程。
本书读者
本书适合以下读者:
·从未接触过Objective-C语言的初学者。
·希望在苹果应用商店淘金的创业人员。
·从其他语言转向iOS开发的程序员。
·正准备转向移动应用开发的 iOS 应用程序开发人员。
本书约定
本书是为从未进行过iOS开发的读者而写的,读者不需要有Objective-C、Cocoa和Apple开发工具方面的经验。当然,如果有一定的开发经验,将更容易掌握这些工具和技术。
读者在阅读每章的内容时,应该事必躬亲,手动输入每行代码,同时应该理解每一节中的重要概念。另外。读者还需花时间阅读APP开发文档,并研究本书介绍的主题。有关iOS开发的信息浩如烟海,而本书的篇幅有限,只能为读者打下坚实的iOS开发基础。
阅读本书之前,读者需要已安装苹果Mac OS X 10.10.x以上版本操作系统的计算机,PC也可以安装Mac OS X,或根据系统情况和需要选择安装iPhone SDK软件包,可以在http://developer.apple.com/ iphone/program/download.html免费下载。
本书所有示例都是用Mac OS X 10.10上的Xcode 6.4以及iOS 9开发的。读者需要一个苹果开发人员账户来访问大部分工具和文档,并且需要一个开发人员许可证来运行iOS设备上的应用程序。可参考https://developer.apple.com/programs/并注册账号。本书中大部分示例可以在Xcode 6.4的iOS模拟器中运行。使用iOS模拟器就不需要苹果开发人员许可证了。当然,如果读者需要把自己开发的程序放在App Store上销售,还需要花费99美元去购买许可证。
苹果网站上提供了大量文档。如果想在Xcode中寻找文档,请在Help菜单下选择Documentation and API Reference,在Documentation Organizer窗口中单击搜索图标,输入文档的标题,并从搜索结果中选择文档。如果想在苹果官方网站查找文档,可以访问https://developer.apple.com/,单击Member Center并登录,选择iOS Dev Center,并在搜索框中输入文档关键词即可。
编 者
触摸信息有时间和空间两个方面,时间方面的信息称为阶段(phrase),表示触摸是否刚刚开始、是否正在移动或处于静止状态,以及何时结束,也就是手指何时从屏幕抬起,如图13.1所示。
图13.1 多点触摸序列和触摸阶段
触摸信息还包括当前在视图或窗口中的位置信息以及之前的位置信息(如果存在)。当一个手指接触屏幕时,触摸就和某个窗口或视图关联在一起,这个关联在事件的整个生命周期都会得到维护。如果有多个触摸同时发生,则只有和同一个视图相关联的触摸会被一起处理。类似地,如果两个触摸事件发生的间隔时间很短,也只有当它们和同一个视图相关联时,才会被处理为多触击事件。
在iOS中,一个UITouch对象表示一个触摸,一个UIEvent对象表示一个事件。事件对象中包含与当前多点触摸序列相对应的所有触摸对象,还可以提供与特定视图或窗口相关联的触摸对象,如
图13.2所示。
图13.2 UIEvent对象及其UITouch对象间的关系
在一个触摸序列发生的过程中,对应于特定手指的触摸对象是持久的,在跟踪手指运动的过程中,UIKit会对其进行修改。发生改变的触摸属性变量有触摸阶段、触摸在视图中的位置、发生变化之前的位置以及时间戳。事件处理代码通过检查这些属性的值来确定如何响应事件。
系统可能随时取消多点触摸序列,进行事件处理的应用程序必须做好正确响应的准备。事件的取消可能是由于重载系统事件引起的,如电话呼入。
13.1.3 事件传递
系统将事件按照特定的路径传递给可以对其进行处理的对象。例如,当用户触摸设备屏幕时,iOS会将其识别为一组触摸对象,并将它们封装在一个UIEvent对象中,放入当前应用程序的事件队列。
事件对象将特定时刻的多点触摸序列封装为一些触摸对象。负责管理应用程序的UIApplication应用对象将事件从队列的顶部取出,然后派发给其他对象进行处理。典型情况下,它会将事件发送给应用程序的焦点窗口,然后代表该窗口的UIWindow对象再将其发送给响应者进行处理。
应用程序通过触碰测试(hit-testing)寻找事件的响应者,即通过递归调用视图层次中视图对象的hitTest:withEvent:方法确认发生触摸的子视图。触摸对象的整个生命周期都和该视图互相关联,即使触摸动作终移动到该视图区域之外也是如此。
UIApplication对象和每个UIWindow对象都在sendEvent:方法中派发事件。由于这些方法是事件进入应用程序的通道,所以可以从UIApplication或UIWindow派生出子类,重载其sendEvent:方法,实现对事件的监控或执行特殊的事件处理,但大多数应用程序都不需要这样做。
【拓展】为了调整事件的传递,UIKit为应用程序提供了一些简化事件处理,甚至完全关闭事件流的编程接口。下面对这些方法进行总结。
þ
关闭事件的传递。默认情况下,视图会接收触摸事件。但是,可以将其userInteractionEnabled属性声明设置为NO,关闭事件传递的功能。隐藏或透明的视图也不能接收事件。
þ
在一定的时间内关闭事件的传递。应用程序可以调用UIApplication的beginIgnoringInteraction
Events方法,并在随后调用endIgnoringInteractionEvents方法来实现这个目的。前一个方法使应用程序完全停止接收触摸事件消息,第二个方法则重启消息的接收。某些时候,当代码正在执行动画时,可能希望关闭事件的传递。
þ
打开多点触摸的传递。在默认情况下,视图只接收多点触摸序列的个触摸事件,而忽略所有其他事件。如果希望视图处理多点触摸,就必须使其启用这个功能。在代码或Interface Builder的查看器窗口中将视图的multipleTouchEnabled属性设置为YES,就可以实现这个 目标。
þ
将事件传递限制在某个单独的视图上。在默认情况下,视图的exclusiveTouch属性被设置为NO。将这个属性设置为YES会使相应的视图具有这样的特性:当该视图正在跟踪触摸动作时,窗口中的其他视图无法同时进行跟踪,它们不能接收到那些触摸事件。然而,一个标识为“独占触摸”的视图不能接收与同一窗口中其他视图相关联的触摸事件。如果一个手指接触到一个独占触摸的视图,则仅当该视图是窗口中一个跟踪手指的视图时,触摸事件才会被传递。如果一个手指接触到一个非独占触摸的视图,则仅当窗口中没有其他独占触摸视图跟踪手指时,该触摸事件才会被传递。
将事件传递限制在子视图上。一个定制的UIView类可以通过重载hitTest:withEvent:方法来将多点触摸事件的传递限制在其子视图上。
评论
还没有评论。