图书目录

目 录

第1章 初识iOS开发 1

1.1 iPhone/iPad 手机应用 1

1.2 iOS5 操作系统 2

1.3 安装Xcode 2

1.4 编写第一个iOS 应用 6

1.4.1 创建一个新Xcode 项目 6

1.4.2 在iPhone模拟器上运行第一个应用程序 9

1.5 熟悉Xcode 界面 10

1.5.1 导航窗格 11

1.5.2 工具窗格 12

1.5.3 编辑窗格 13

1.5.4 目标窗格 13

1.6 Xcode 项目结构 14

1.7 nib 编辑界面16

1.7.1 界面的组成 16

1.7.2 设计用户界面 17

1.8 应用启动过程 21

1.9 Xcode 帮助文档 21

第2章 Objective-C语言基础 24

2.1 Objective-C 程序结构 24

2.1.1 接口和实现文件 24

2.1.2 编译器 28

2.2 面向对象的编程 28

2.2.1 类和实例 29

2.2.2 消息和方法 30

2.2.3 实例变量 33

2.2.4 创建实例的三种方法 34

2.3 数 据 类 型36

2.3.1 常见数据类型 36

2.3.2 字符串 36

2.3.3 结构体 36

2.3.4 id 类型 37

2.3.5 BOOL 40

2.3.6 SEL  41

2.3.7 Class 43

2.3.8 nil和Nil  44

2.3.9 指针 46

2.3.10 数组 47

2.4 操作符和控制语句 48

2.5 输入和输出数据 49

2.6 block 50

第3章 Objective-C类52

3.1 类的通用格式 52

3.2 声明对象和对象初始化 56

3.3 变量 58

3.3.1 局部变量、全局变量和实例变量 58

3.3.2 理解static  60

3.3.3 变量的存储类别 61

3.4 @property 和 @synthesize63

3.5 多输入参数的方法 65

3.6 异常处理 67

3.7 线程 70

3.7.1 线程创建与启动 71

3.7.2 线程同步 71

3.7.3 线程间通信 72

3.8 Singleton  73

3.9 基础框架类 74

3.9.1 NSString 74

3.9.2 NSDate 76

3.9.3 NSNumber  76

3.9.4 NSData 77

3.9.5 NSArray 和NSMutableArray  78

3.9.6 NSSet  78

3.9.7 NSDictionary 和NSMutableDictionary 78

3.9.8 属性列表 80

3.9.9 NSObject 探究 81

3.10 存取器 81

第4章 继承和协议 83

4.1 继承 83

4.2 方法重写 86

4.3 方法重载 87

4.4 多态和super 89

4.5 抽象类 93

4.6 动态方法调用 94

4.7 访问控制 96

4.8 类别 99

4.9 协议101

4.10 可选的方法104

第5章 内存管理和ARC 106

5.1 内存管理的基本原理106

5.2 ARC 107

第6章 iOS开发模式110

6.1 MVC 110

6.1.1 视图 111

6.1.2 视图控制器 112

6.2 目标-操作模式113

6.2.1 操作 113

6.2.2 应答器链 114

6.2.3 应用生命周期的事件 115

6.3 通知115

6.4 委托117

6.5 数据源117

6.6 Key-Value Observing 118

第7章 视图和绘图120

7.1 视图的基本概念120

7.1.1 窗口 123

7.1.2 子视图和超视图 123

7.1.3 框架 125

7.1.4 边界和中心 126

7.2 布局129

7.3 变换131

7.4 可见性和不透明度134

7.5 绘图和图像135

7.5.1 UIImage 和UIImageView  135

7.5.2 UIImage 和图形上下文 137

7.5.3 CGImage 139

7.5.4 drawRect 方法实现 141

7.5.5 图形上下文的状态 143

7.5.6 路径 143

7.5.7 颜色和模型 146

7.5.8 图形上下文变换 147

7.5.9 阴影 149

7.6 点和像素149

7.7 内容模式150

第8章 视图控制器和模态视图152

8.1 应用界面结构154

8.2 创建一个视图控制器155

8.2.1 代码创建视图控制器和视图 156

8.2.2 在nib中创建视图控制器 159

8.2.3 在nib中实例化视图控制器 159

8.3 旋转视图160

8.3.1 初始化方位 161

8.3.2 旋转事件 162

8.4 创建视图控制器实例163

8.4.1 创建视图控制器 164

8.4.2 视图控制器中的视图 164

8.4.3 视图控制器生命周期 165

8.4.4 支持旋转手机功能 165

8.5 模态视图167

8.5.1 模态视图的配置 167

8.5.2 模态视图的呈现 168

8.5.3 模态视图的关闭 169

第9章 导航控制器和标签栏控制器171

9.1 导航控制器172

9.1.1 导航控制器的组成 172

9.1.2 配置一个导航界面 173

9.1.3 配置导航视图控制器 177

9.1.4 视图控制器的事件 179

9.2 创建导航控制器实例179

9.2.1 在两个页之间导航实例 179

9.2.2 在两个页之间传递数据 187

9.2.3 定制返回按钮 190

9.2.4 在导航控制栏上添加系统按钮和左右按钮 191

9.3 标签栏控制器193

9.3.1 标签栏条目的图像 194

9.3.2 配置一个标签栏控制器 195

9.4 标签栏控制器实例196

9.4.1 创建标签栏控制器 197

9.4.2 UITabBarItem  200

第10章 滚动视图和表视图204

10.1 滚动视图 204

10.1.1 创建一个滚动视图 206

10.1.2 滚动视图的属性 209

10.1.3 分页显示 210

10.1.4 放大和缩小 211

10.1.5 滚动视图的委托 214

10.1.6 滚动视图的触摸 215

10.2 滚动视图实例218

10.3 表视图224

10.3.1 表视图类型 225

10.3.2 UITableViewDataSource 227

10.3.3 表单元基础 230

10.3.4 定制表单元 236

10.3.5 选中某一行后的处理 242

10.3.6 UITableViewController  245

10.3.7 表视图的滚动和搜索 246

10.3.8 表视图的编辑功能 251

10.4 表视图实例257

第11章 iPad应用和拆分视图266

11.1 拆分视图控制器268

11.1.1 拆分视图例子 268

11.1.2 理解拆分视图代码 272

11.2 团购应用实例278

11.3 从导航控制器迁移到拆分视图286

11.3.1 基于导航控制器的iPhone应用 287

11.3.2 转化为iPad 应用 292

11.4 popover 297

11.4.1 显示一个popover  297

11.4.2 关闭popover  299

11.4.3 popover 和表视图实例 299

11.4.4 基于样本数据和滑动条的popover 实例 305

11.4.5 手势和popover 的结合编程 311

11.5 拆分视图和popover 315

11.6 模态视图和popover 315

第12章 视图上的控件322

12.1 文本控件 322

12.1.1 UILabel  323

12.1.2 UITextField 324

12.1.3 UITextView  326

12.2 键盘操作 327

12.2.1 定制快捷键 328

12.2.2 在标准键盘上添加自己的键 330

12.2.3 键盘通知 331

12.3 核心文本 334

12.4 网页视图 338

12.4.1 UIWebView  338

12.4.2 网页视图实例 341

12.4.3 loadHTMLString方法 346

12.5 其他控件和视图347

12.5.1 UIActivityIndicatorView  347

12.5.2 UIProgressView 349

12.5.3 UIPickerView  350

12.5.4 UISearchBar 352

12.5.5 UIControl  353

12.5.6 UISwitch 和UIPageControl  354

12.5.7 UIDatePicker 355

12.5.8 UISlider 和UISegmentedControl 356

12.5.9 UIButton  358

12.5.10 导航栏、工具栏和标签栏 359

12.6 模态对话框364

12.6.1 警告视图 365

12.6.2 操作单 366

12.6.3 本地通知 367

第13章 音频和视频编程370

13.1 音频API370

13.1.1 系统声音API  370

13.1.2 声音会话 372

13.1.3 声音播放器 373

13.1.4 录音 375

13.1.5 访问资料库中的音乐 375

13.1.6 其他API  382

13.2 音频操作实例382

13.3 视频387

13.4 UIVideoEditorController391

13.5 视频实例 392

13.6 播放列表和多视频播放395

13.7 流播放400

13.7.1 两种网络播放模式 400

13.7.2 HLS原理 401

13.7.3 流播放实例 402

13.8 在视频上叠加自己的内容404

第14章 照片和网络编程410

14.1 照片编程 410

14.1.1 复制照片到iPhone模拟器 410

14.1.2 从相册中读取照片 411

14.1.3 保存照片到相册 419

14.1.4 使用照相机 419

14.1.5 Assets Library 框架 421

14.2 网络编程 423

第15章 GPS、地图、日历和通讯录编程427

15.1 位置类428

15.1.1 CLLocation  428

15.1.2 CLLocationManager  428

15.1.3 位置类例子 431

15.2 地 图433

15.2.1 MapKit 框架 433

15.2.2 MKMapView  433

15.2.3 MKPlacemark、MKUserLocation 和MKReverseGeocoder  436

15.2.4 显示地图 436

15.2.5 在地图上标记位置 442

15.2.6 根据位置找到地址信息 443

15.2.7 获取当前位置 444

15.2.8 标注 445

15.2.9 覆盖图 449

15.3 日历451

15.3.1 日历数据库 451

15.3.2 日历界面 455

15.4 通讯录457

15.4.1 选择通讯录上的联系人 459

15.4.2 ABPeoplePickerNavigationController 使用实例 463

15.4.3 使用presentModalViewController 弹出和关闭视图 466

15.4.4 查询并更新通讯录上的联系人 466

15.4.5 显示和编辑一个联系人信息 467

15.4.6 添加新联系人 469

15.4.7 查询和更新通讯录实例 471

第16章 图层478

16.1 视图和图层479

16.2 图层和子图层479

16.2.1 操纵图层层次结构 481

16.2.2 定位子图层 481

16.2.3 CAScrollLayer  482

16.2.4 子图层的布局 482

16.3 在一个图层中绘制482

16.3.1 内容的重设大小和重定位 483

16.3.2 自绘图的图层 485

16.4 变换486

16.4.1 深度 488

16.4.2 变换和键-值码 490

16.4.3 阴影、边界以及更多信息 490

16.4.4 图层和键-值码 491

第17章 动画492

17.1 动画概述 492

17.2 UIImageView 动画493

17.3 视图动画 494

17.3.1 动画块 494

17.3.2 修改动画块 495

17.3.3 过渡动画 497

17.3.4 基于块的视图动画 499

17.4 隐式动画 501

17.4.1 动画事务 501

17.4.2 媒体定时函数 502

17.5 核心动画 503

17.5.1 CABasicAnimation 和它的继承 503

17.5.2 使用CABasicAnimation 504

17.5.3 关键帧动画 506

17.5.4 自定义属性的动画显示 507

17.5.5 分组的动画 508

17.5.6 过渡 511

17.5.7 动画列表 512

17.6 操作513

17.6.1 操作的含义 513

17.6.2 操作搜索 513

17.6.3 深入到操作搜索 514

17.6.4 非属性操作 516

第18章 触摸和手势编程518

18.1 触摸518

18.1.1 触摸事件和视图 519

18.1.2 接收触摸 519

18.1.3 限制触摸 521

18.1.4 解释触摸 521

18.2 手势识别器525

18.2.1 手势识别器类 529

18.2.2 多手势识别器 532

18.2.3 给手势识别器添加子类 533

18.2.4 手势识别器委托 534

18.3 触摸的发送535

18.3.1 命中测试 536

18.3.2 初始的触摸事件发送 538

18.3.3 手势识别器和视图 539

18.3.4 识别 539

18.3.5 触摸和响应链 539

18.4 手势识别器实例540

18.4.1 轻击手势编程 540

18.4.2 多次触摸和响应者链 543

18.4.3 轻扫手势编程 546

18.4.4 离散和连续手势 549

18.4.5 创建自定义手势 551

18.4.6 添加声音 556

18.4.7 手势识别的优先顺序 559

18.4.8 长按手势 560

第19章 游戏和设备间通信565

19.1 转动或晃动手机565

19.1.1 晃动事件 566

19.1.2 UIAccelerometer 567

19.1.3 Core Motion 569

19.2 设备之间通信569

19.2.1 Bonjour  570

19.2.3 GameKit 572

19.2.4 GKSession 573

19.2.5 GKPeerPickerController 和设备选择器 577

19.2.6 GameKit 实例 578

第20章 iOS数据的存储和读取584

20.1 文件操作 584

20.1.1 保存和读取文件 585

20.1.2 文件共享和文件类型 586

20.1.3 传递一个文档 588

20.2 用户默认 591

20.3 XML591

20.4 SQLite596

20.5 核心数据 597

20.6 图形文件 607

20.7 互联网数据609

20.7.1 XML 和JSON 609

20.7.2 调用云服务的手机应用的架构 618

第21章 高级内容621

21.1 电子邮件和短消息621

21.2 苹果推服务622

21.3 多线程623

21.3.1 NSThread  625

21.3.2 NSOperation 和NSOperationQueue 626

21.3.3 NSOperation 实例 628

21.3.4 GCD  632

21.4 本地化635

21.5 Xcode 调试器636

21.6 静态分析器642

21.7 版本控制 643

21.8 Instruments 644

21.9 发布应用程序647

21.10 iCloud 编程647

21.10.1 让你的应用支持iCloud 648

21.10.2 iCloud API总览 652

21.10.3 写UIDocument 的子类 654

21.10.4 打开一个iCloud文件 654

21.11 ARC 应用实例660

21.11.1 使用Xcode 自带的转换器 663

21.11.2 ARC手动转换 674

21.11.3 委托和弱指针属性 680