《疯狂iOS讲义》 是2014年电子工业出版社出版的图书,作者是李刚。
基本介绍
- 书名:疯狂iOS讲义
- 作者:李刚
- 出版社:电子工业出版社
- 出版时间:2014年
编辑推荐
基于iOS 7平台,全部案例均通过iPhone 5s真机测试。商业级手游代码无保留全盘呈现。国家级行业大奖得主、电子工业出版社优秀作者、IT名家李刚老师出品,一如既往的质量保障。iOS开发零基础入门请阅读《疯狂iOS讲义(下)--Objective-C 2.0与iPhone/iPad套用开发基础》。Android套用开发请阅读15次印刷旗舰作品《疯狂Android讲义(第2版)》
目录
第1章 多点触摸与手势检测1
1.1 回响者链 2
1.2 回响触碰方法 3
1.3 使用手势处理器(UIGestureRecognizer)3
1.3.1 使用UITapGestureRecognizer处理点击手势4
1.3.2 使用UIPinchGestureRecognizer处理捏合手势 6
实例:通过捏合手势缩放图片7
1.3.3 使用UIRotationGestureRecognizer处理旋转手势 9
实例:通过旋转手势旋转图片9
1.3.4 使用UISwipeGestureRecognizer处理轻扫手势 10
实例:贪食蛇 12
1.3.5 使用UIPanGestureRecognizer处理拖动手势18
1.3.6 使用UILongPressGestureRecognizer处理长按手势 19
实例:长按添加按钮20
1.4 创建和使用自定义手势处理器 21
1.4.1 开发自定义手势处理器 21
1.4.2 使用自定义手势处理器 23
1.5本章小结 24
第2章 国际化25
2.1iOS套用国际化的基础 26
2.1.1 iOS套用的国际化思路26
2.1.2 Objective-C国际化支持的语言和国家 28
2.2 国际化界面设计档案 29
2.3国际化应用程式的显示名称 32
2.4国际化图片 34
2.5国际化文本 35
2.6本章小结 38
第3章 iOS的数据存储与IO39
3.1应用程式沙盒 40
3.1.1获取Documents目录 41
3.1.2获取tmp目录41
3.1.3档案保存策略思考41
3.2应用程式参数与用户默认设定42
3.2.1使用Settings Bundle 42
3.2.2使用NSUserDefaults读取、保存应用程式参数50
3.3属性列表 54
实例:备忘录 55
3.4对象归档和原生I/O API58
3.5使用SQLite 3资料库 58
3.5.1iOS的SQLite编程58
3.5.2创建资料库和表 63
3.5.3使用SQL语句执行查询63
实例:英文生词本 64
3.5.4使用sqlite3工具 67
3.5.5使用SQLite Manager管理资料库69
3.6使用Core Data框架 71
3.6.1Core Data简介 71
3.6.2初始化Core Data项目 73
3.6.3设计实体模型76
3.6.4使用Core Data实现数据的增、删、改、查 78
3.6.5管理实体的关联关係 84
实例:图书管理系统84
3.7本章小结 95
第4章 多媒体套用开发 96
4.1音频和视频的播放 97
4.1.1使用System Sound Services播放音效97
4.1.2使用AVAudioPlayer播放音乐 98
4.1.3使用MPMediaPickerController选择系统音乐 102
实例:简单音乐播放器 103
4.1.4使用MPMoviePlayerController播放视频 106
4.2使用AVAudioRecorder录製音频 108
4.3拍照和录製视频112
4.3.1使用UIImagePickerController拍照和录製视频112
4.3.2使用AVFoundation拍照和录製视频 116
实例:完全自定义的相机118
4.4使用AVFoundation生成视频缩略图135
4.5本章小结 137
第5章 管理手机 138
5.1使用AddressBook管理联繫人 139
5.1.1删除联繫人 142
5.1.2添加联繫人 144
5.1.3修改联繫人 147
5.2使用AddressBookUI管理联繫人 151
5.2.1使用ABNewPersonViewController添加联繫人 153
5.2.2使用ABUnknownPersonViewController显示未知联繫人 154
5.2.3使用ABPeoplePickerNavigationController选择联繫人 156
5.2.4使用ABPersonViewController显示指定联繫人 157
5.3使用UIApplication打电话、发简讯 159
5.4使用MFMessageComposeViewController发简讯160
5.5使用MFMailComposeViewController传送邮件 162
5.6本章小结 165
第6章 加速计与陀螺仪 166
6.1iOS支持的加速计和陀螺仪 167
6.1.1iOS加速计和陀螺仪的理论基础167
6.1.2基于代码块方式获取加速度数据、陀螺仪数据、磁场数据 168
6.1.3主动请求获取加速度数据、陀螺仪数据、磁场数据172
实例:怪物足球173
6.2感知设备移动 178
实例:水平仪 181
6.3iOS 7新增的计步器184
6.4iOS 7新增的CMMotionActivityManager 186
6.5本章小结 188
第7章 多执行绪 189
7.1执行绪概述 190
7.1.1执行绪和进程 190
7.1.2多执行绪的优势191
7.2使用NSThread实现多执行绪192
7.2.1创建和启动执行绪 192
7.2.2执行绪的状态 194
7.2.3终止子执行绪 194
7.2.4执行绪睡眠195
实例:使用执行绪下载网路图片196
7.2.5改变执行绪优先权 197
7.3执行绪同步与执行绪通信199
7.3.1执行绪安全问题199
7.3.2使用@synchronized实现同步201
7.3.3释放对同步监视器的锁定 203
7.3.4同步锁(NSLock)203
7.3.5使用NSCondition控制执行绪通信 205
实例:生产者-消费者 205
7.4使用GCD实现多执行绪208
7.4.1创建伫列209
7.4.2异步提交任务210
实例:使用GCD下载图片212
7.4.3同步提交任务213
7.4.4多次执行的任务 214
7.4.5只执行一次的任务215
7.5后台运行 216
7.5.1进入后台时释放记忆体 216
实例:疯狂飞机大战216
7.5.2进入后台时保存状态 223
7.5.3请求更多的后台时间 223
7.6使用NSOperation与NSOperationQueue实现多执行绪225
7.6.1使用NSInvocationOperation和NSBlockOperation226
实例:使用NSBlockOperation下载图片 226
7.6.2定义NSOperation子类 227
7.7本章小结 229
第8章 iOS网路套用编程 230
8.1检测网路状态 231
8.1.1检查网路状态 231
8.1.2监听网路状态改变 234
8.2使用CFNetwork实现TCP协定的通信 235
8.2.1IP位址与连线埠号 236
8.2.2TCP协定基础236
8.2.3使用CFSocket实现TCP伺服器端 237
8.2.4使用CFSocket实现TCP客户端241
实例:网路聊天程式244
8.2.5使用CocoaAsyncSocket实现TCP客户端247
8.3使用NSURLConnection 250
8.3.1使用NSURLConnection从网路获取数据 250
8.3.2使用NSMutableURLRequest向伺服器传送数据 253
8.4XML解析 255
8.4.1DOM与SAX 255
8.4.2使用NSXMLParser解析XML文档 257
8.4.3使用libxml2解析XML文档 262
8.4.4使用GDataXML解析XML文档 266
8.4.5使用GDataXML生成、修改XML文档268
8.5JSON解析 271
8.5.1JSON的基本知识 271
8.5.2使用NSJSONSerialization处理JSON数据 274
8.5.3使用SBJson解析JSON数据 274
8.5.4使用JSONKit解析JSON数据 275
8.6使用AFNetworking实现网路通信280
8.6.1提交GET请求与提交POST请求280
实例:访问被保护资源 281
8.6.2处理JSON或Plist回响 284
8.6.3处理XML回响 288
8.6.4上传档案 290
8.7使用ASIHTTPRequest框架实现网路编程 293
8.7.1传送同步或异步的GET请求 293
8.7.2使用代码块 296
8.7.3使用NSOperationQueue管理请求 297
8.7.4传送请求参数和档案上传 299
实例:天气预报300
8.8本章小结 311
第9章 使用CoreLocation定位 312
9.1iOS的定位支持313
9.1.1GPS卫星定位313
9.1.2基站定位 314
9.1.3WiFi定位 314
9.2获取定位信息 314
9.2.1获取位置信息 315
9.2.2使用iOS模拟器模拟位置 318
9.2.3监控行车速度和行车距离 318
9.3方向监测 320
实例:指南针 322
9.4区域监测 323
9.5本章小结 325
第10章 使用MapKit开发地图服务 326
10.1使用MapKit框架 327
10.1.1使用MKMapView控制项328
10.1.2指定地图显示中心和显示区域329
10.1.3使用iOS 7新增的MKMapCamera 332
10.2根据地址定位333
10.2.1地址解析与反向地址解析333
10.2.2根据地址定位 337
10.3在地图上添加锚点340
10.3.1添加简单的锚点340
10.3.2添加自定义锚点343
10.4在地图上添加覆盖层 345
10.4.1添加几何覆盖层346
10.4.2使用iOS 7新增的MKTileOverlay覆盖层 348
10.5使用iOS 7新增的MKDirections获取导航路线 350
实例:行车导航仪 351
10.6本章小结 354
第11章 推送机制 355
11.1使用NSNotificationCenter通信 356
11.1.1使用NSNotificationCenter监听系统组件的通知 358
11.1.2使用NSNotificationCenter监听自定义通知 359
11.2iOS本地通知 361
11.3iOS远程推送通知 364
11.3.1开发Push客户端套用366
11.3.2开发Push服务端程式377
11.4本章小结 381
第12章 iCloud服务与套用 382
12.1iCloud入门 383
12.1.1为套用开启iCloud服务 384
12.1.2使用NSMetadataQuery查询文档389
12.1.3添加文档 393
12.1.4编辑文档 395
12.1.5删除文档 397
12.2使用iCloud保存云端首选项 398
12.3本章小结 401
第13章 使用cocos2d开发2D游戏402
13.1cocos2d简介 403
13.1.1cocos2d的特点 403
13.1.2cocos2d的主要功能 403
13.2cocos2d的下载与安装 404
13.2.1 下载cocos2d 404
13.2.2安装cocos2d405
13.2.3使用cocos2d-iPhone的帮助文档 405
13.2.4cocos2d中内置的项 406
13.3创建cocos2d项目 407
13.3.1HelloWorld cocos2d项目 407
13.3.2cocos2d项目如何支持ARC 408
13.3.3cocos2d项目结构和代码分析 413
13.4CCNode节点类 419
13.4.1CCNode类的属性 419
13.4.2CCNode类的方法420
13.5CCScene场景类 423
13.5.1CCTransitionScene 场景切换423
13.5.2cocos2d支持的场景过渡效果 424
13.6CCLayer类 424
13.6.1CCLayer类的属性 425
13.6.2CCLayer类的常用方法 425
13.6.3CCLayer类的作用 425
13.6.4CCLayerColor类的属性和方法425
13.6.5CCLayerGradient渐变色层类 426
13.6.6CCMenu选单类 426
13.7CCDirector导演类429
13.7.1CCDirector导演类的属性430
13.7.2CCDirector导演类的方法430
13.8CCTexture纹理类 431
13.8.1纹理的相关概念431
13.8.2纹理相关的类 431
13.9CCSprite精灵类 432
13.9.1CCSprite精灵类的属性 432
13.9.2CCSprite精灵类的方法 432
13.9.3CCSpriteFrame精灵帧 435
13.9.4CCSpriteFrameCache精灵帧快取 436
13.9.5CCSpriteBatchNode精灵表单 436
13.9.6製作精灵表单 438
13.9.7精灵表单示例 440
13.10cocos2d中的动作442
13.10.1cocos2d中的动作类443
13.10.2基本动作 444
13.10.3组合动作 453
13.10.4Ease动作 454
13.10.5延迟动作 456
13.10.6方法回调动作 456
13.10.7代码块调用动作 460
13.11cocos2d中的动画462
13.11.1cocos2d中动画相关的类462
13.11.2简单动画效果 463
13.11.3使用精灵表单实现动画效果 464
13.12cocos2d中的文本466
13.12.1CCLabelTTF类 466
13.12.2CCLabelBMFont类 467
13.13cocos2d中的声音470
13.13.1SimpleAudioEngine470
13.13.2游戏中的声音设定选项功能实现 474
13.14疯狂打飞机游戏 477
13.14.1开始前的準备工作 477
13.14.2添加游戏选单项功能 478
13.14.3预载入游戏资源 480
13.14.4玩家飞机飞行效果 485
13.14.5玩家飞机Touch实现 487
13.14.6背景滚动效果 488
13.14.7添加敌机 491
13.14.8玩家飞机添加子弹并射击 494
13.14.9添加背景音乐 498
13.14.10 添加游戏积分统计 498
13.14.11 添加游戏大Boss 500
13.15本章小结 504
第14章 粒子效果、瓦片地图和物理引擎 505
14.1粒子系统相关的类506
14.1.1CCParticleSystem类506
14.1.2CCParticleSystemQuad类511
14.1.3CCParticleBatchNode类 512
14.2cocos2d中内置的粒子系统 512
14.2.1使用cocos2d内置的粒子系统513
14.2.2手动创建粒子系统类514
14.3使用Particle Designer生成粒子效果 517
14.3.1Particle Designer粒子工具的使用 518
14.3.2使用plist档案创建粒子系统520
14.4瓦片地图520
14.4.1下载和安装Tiled地图编辑器521
14.4.2使用Tiled绘製地图522
14.5Tiled地图相关的类 527
14.5.1CCTMXTiledMap类 527
14.5.2CCTMXLayer类 529
14.5.3CCTMXObjectGroup类530
14.6在项目中使用Tiled地图 530
14.7真实手游:萌仙 535
14.7.1设计地图场景 535
14.7.2载入地图 535
14.7.3地图的移动537
14.7.4物体遮挡效果 539
14.7.5设定障碍物542
14.7.6寻路算法 544
14.7.7随机出现怪物 549
14.7.8玩家和怪物进行战斗552
14.8Box2D物理引擎 559
14.8.1物理引擎概述 559
14.8.2Box2D的核心概念 559
14.8.3Box2D常用的属性和方法 562
14.8.4Box2D模板项目HelloBox2D 563
14.8.5HelloBox2D模板项目代码分析565
14.8.6cocos2d和Box2D 573
14.8.7Box2D开发步骤 575
14.9开发Box2D项目 575
14.10愤怒的小鸟 581
14.10.1开始前的準备工作 581
14.10.2製作游戏启动画面 581
14.10.3进度条製作 582
14.10.4游戏中的粒子效果 585
14.10.5游戏选关操作 590
14.10.6设计关卡数据 594
14.10.7设计精灵类 596
14.10.8游戏主界面 601
14.10.9弹弓发射小鸟 604
14.10.10 整合Box2D物理引擎 609
14.10.11 游戏过关设计 613
14.11本章小结 616
前言
《疯 狂iOS讲义》下册来了--作为上册的延续,本书的内容更加深入,更加"有趣",如果你已经挺过了上册中Objective-C语法的介绍、iOS界面开 发中繁多的UI控制项,恭喜你可以顺利进入下册学习了。本书内容包括《萌仙》模组、《打飞机》、《贪食蛇》、《天气预报》、《愤怒的小鸟》等大量精彩的 iOS套用和游戏,本书不仅会细緻地介绍开发这些套用和游戏所需的基础知识,而且会真正带领读者从零开始,逐步完成这些套用和游戏。如果读者认真学完本 书,并掌握书中内容,将可以完全胜任iOS套用和游戏开发。
虽然本书的知识点足够深入、实用,但对于已经掌握《疯狂iOS讲义》上册内容的读者来说,本书的知识依然很容易看懂、理解,并很容易动手做出来。只要读者真正对书中套用、游戏感兴趣,并愿意扎扎实实地动手实践,完全可以很好地学会、掌握书中这些知识点。
有些读者可能会被市面上某些薄薄的图书吸引:他们以为阅读一本薄薄的图书更容易掌握这门技术。但实际上,无论你学还是不学,技术就在那里;无论作者写还是不写,技术就在那里。如果一本技术图书太过单薄,则可能有以下三种情况:
技术本身就简单,只要简单的介绍即可。
技术并不简单,但图书只介绍了该技术的皮毛,读者学起来很轻鬆,但实际开发时就感觉"书到用时方恨少"。
技术并不简单,该图书高度概括、提纲挈领地归纳该技术的要点。
iOS开发绝不是三言两语就可以说清的一门技术,而《疯狂iOS讲义》并不打算只归纳该技术的要点,而是力求全面、 细緻地介绍iOS开发的相关内容,《疯狂iOS讲义》包括了两大块知识:Objective-C语言和iOS平台的套用开发,因此不得不将《疯狂iOS讲 义》分为上、下册(最初打算用一本书介绍完,但后来发现这个想法做不到)。
写一本全面、系统的图书比写一本薄薄的书辛苦多了!如果只是写一本薄薄的书,则可以随便介绍点常见的知识,加点例子就行了。但如果打算全面、系统地讲清楚一门技术,就需要高屋建瓴地把握整个技术的大纲,并理清各知识点之间的关联,然后还需要逐个介绍每个知识点的细节。
有一点小小的遗憾:出于篇幅限制,《疯狂iOS讲义》下册中没有包括SpriteKit(iOS 7新增的游戏引擎)相关内容,除此之外,本书基本全面介绍了iOS 7新增的API,这是考虑到iOS游戏开发者普遍依然採用cocos2d,因此本书暂时没有涉及SpriteKit相关内容。
本书有什幺特点
本书以《疯狂iOS讲义》上册为基础,本书中不包含Objective-C语法、iOS界面编程、图形图像处理等基础知识。
本书包含多点触摸与手势检测、套用国际化、数据存储、SQLite资料库与Core Data、iOS多媒体开发、加速计和陀螺仪、多执行绪、网路编程、定位、地图、推送机制、iCloud服务等内容,本书还通过疯狂打飞机、萌仙、愤怒的小 鸟等实例介绍了cocos2d框架的功能和用法。
本书大部分章节由李刚执笔,本书最后两章由疯狂软体教育中心的肖文吉老师执笔,最后由李刚统稿。
本书保持了"疯狂体系"的一贯风格:操作步骤详细,编程思路清晰,语言平实。认真看完本书,把书中所有示例都练习一 遍,本书带给你的只是9个字:"看得懂、学得会、做得出"。本书不会让你认识一堆新名词,只会让你学会实际的iOS套用开发。只要读者认真阅读本书,并掌 握书中知识,那幺就完全可以胜任企业中iOS套用开发、iOS手机游戏开发的要求。
读者在阅读本书时如果遇到知识上的问题,则可以登录疯狂Java联盟与广大学习者交流,笔者也会通过该平台与大家一起交流、学习。
本书还具有如下几个特点:
1.知识全面,覆盖面广
不得不说,本书是市面上所有iOS图书中内容最全面、体系最庞大的。本书上、下册全方位地涵盖了 Objective-C语法、iOS开发基础知识,iOS开发高级知识、cocos2d游戏开发框架等内容。这些知识将带领读者从零开始,逐步掌握iOS 开发的基础,直至步入iOS开发殿堂。
2.内容实际,实用性强
本书并不局限于枯燥的理论介绍,而是採用了"项目驱动"的方式来讲授知识点。全书有近百个实例,几乎每个知识点都可以找到对应的参考实例。书中还提供了天气预报、疯狂打飞机、萌仙、愤怒的小鸟等真实的套用和手游,具有极高的参考价值。
3.讲解详细,上手容易
本书保持了"疯狂系列"的一贯风格:操作步骤详细,编程思路清晰,语言平实。只要读者有学习的决心和毅力,认真掌握本书上、下册的知识,即可完全胜任实际企业中 iOS开发的要求。
(注:因中文百科对词条语言风格与措辞限制较为严格,故对前言内容进行部分删减。详细内容参见原书)
2014-1-8