Swift iOS应用开发实战[按需印刷]

更多详情

内容简介: 如果你是一位有经验的Objective-C程序员,本书将会为你快速掌握Swift开发提供捷径;如果你已经掌握了Swift语言,本书能让你轻松获得工程级的项目开发经验!本书基于Swift语言,通过大量案例,详细讲解和演示了iOS中的各种功能和组件的用法,iOS开发中的各种技巧,以及完整的iOS应用开发方法,是专门为有经验的Objective-C程序员和只是掌握了Swift语言的新人量身打造的!作者是资深的iOS程序员,深谙Objective-C和Swift两种技术,同时也经历了从Objective-C到Swift的转变,无论是技术上,还是经验上,作者的资历都能保证本书很好地完成它的使命。本书摒弃了枯燥的以功能介绍为导向的理论讲解,取而代之的是以大量有代表性的实战案例为切入点,让读者在啊实战中掌握SwiftiOS应用开发。

目录: 前 言
第1章Swift简介1
1.1初识Swift2
1.2 了解Playground4
1.2.1 Playground的编辑器模式5
1.2.2 时间轴简介6
1.2.3 Quick Look所支持的类型10
1.2.4 为什么要用Playground10
1.2.5 Playground的一些限制10
1.3 了解Xcode11
1.3.1 使用Xcode创建iOS项目11
1.3.2 Xcode的工具栏14
1.3.3 导航区域15
1.3.4 编辑区域17
1.3.5 实用工具区域18
1.4  使用代码编辑器19
1.5 iOS模拟器22
1.5.1 iOS模拟器的特性22
1.5.2 模拟器中iOS系统的基本设置24
1.5.3 在模拟器中安装和卸载应用程序25
1.5.4 iOS模拟器的限制25
第2章搭建计算器的界面26
2.1为移动平台开发应用26
2.2 了解故事板29
2.2.1  创建用户界面工具Interface Builder30
2.2.2 故事板30
2.3 创建用户界面36
2.3.1 设置界面的预览窗口36
2.3.2 向视图添加界面元素38
2.3.3 Interface Builder的布局工具39
2.4 理解iOS 8的视图和窗口41
2.4.1 视图概述41
2.4.2 UIWindow类41
2.4.3 视图的层次41
2.4.4视图的类型43
2.5与代码进行关联43
2.5.1要完成的效果44
2.5.2理解Outlet和Actions44
2.5.3使用快速检查器查看关联49
第3章设计模式和视图控制器51
3.1MVC设计模式简介51
3.2Calculator项目中的控制器543.2.1实现计算器运算符的相关代码543.2.2实现计算结果的相关代码56
3.3关于Application Delegate57
3.4了解视图控制器59
3.4.1视图控制器简介59
3.4.2不同类型的视图控制器61
第4章使用故事板组织和管理视图64
4.1创建购物应用程序64
4.1.1创建应用程序64
4.1.2创建Shopping的用户界面66
4.1.3创建数据模型70
4.1.4添加导航控制器71
4.1.5创建其他的视图控制器73
4.1.6在故事板中连接视图77
4.2调整数据模型79
4.2.1重建商品信息的数据模型79
4.2.2 改变商品的购买状态81
4.2.3创建欲购买的商品83
第5章自定义表格视图86
5.1剖析表格视图87
5.2使用UITableViewController创建表格89
5.2.1创建超市的特价商品列表89
5.2.2创建特价商品的数据模型91
5.2.3通过data source传递数据93
5.2.4在IB中自定义单元格94
5.3表格视图中的选择与删除99
5.3.1删除表格中的单元格99
5.3.2单元格的选择和取消选择101
5.4 委托101
5.4.1协议102
5.4.2协议方法103
5.5设置应用程序启动画面103
5.5.1直接设置启动画面104
5.5.2通过LaunchScreen.xib设置启动画面105
第6章自动布局107
6.1自动布局的概念107
6.1.1约束 109
6.1.2约束的关系109
6.1.3创建约束110
6.2在IB中创建约束110
6.2.1为视图元素创建约束111
6.2.2通过预览查看实时效果112
6.2.3通过工具栏添加约束113
6.2.4改变约束的值115
6.2.5拖曳出约束116
6.3竖屏下的自动布局117
6.3.1对于约束的考虑117
6.3.2添加浏览特价商品详情的功能118
6.3.3为竖屏界面添加相关约束120
6.3.4显示相关商品信息123
6.4横屏下的完美布局125
6.4.1Size Class125
6.4.2使用Size Class126
第7章使用集合视图130
7.1集合视图简介130
7.2使用集合视图显示数据 132
7.2.1在故事板中添加新的场景132
7.2.2为集合视图提供数据133
7.2.3创建自定义的集合视图单元格136
7.3自定义集合视图的布局138
7.4标签栏控制器139
7.4.1标签栏及其中的标签139
7.4.2在故事板中添加标签栏控制器140
7.4.3设置标签栏配置条目143
第8章获取远程数据145
8.1使用故事板创建用户界面145
8.2使用NSURLSession获取数据148
8.2.1生成URL连接150
8.2.2使用异步方式解决等待问题152
8.3构建自定义API控制器154
8.4添加影片搜索功能157
8.5设计IMDb的用户界面160
8.5.1 为场景添加虚化背景效果161
8.5.2 通过类的扩展增加String的功能163
8.5.3 自定义label字体和图像视图165
第9章在程序中获取照片168
9.1 框架简介169
9.2 搭建项目的用户界面170
9.2.1 搭建用户基本界面170
9.2.2 导航栏控制器的Navigation Item173
9.2.3 为Photos Gallery项目建立关联174
9.3 完成Photos Gallery项目的逻辑代码177
9.3.1 使用PHAssetCollection管理照片集177
9.3.2 获取照片集中的照片181
9.3.3 完善PhotoViewController控制器184
9.3.4 完成PhotoViewController的交互186
9.3.5 使用UIImagePickerController多方式获取照片189
第10章使用Facebook和Twitter整合社交192
10.1 使用Accounts Framework192
10.1.1 访问Twitter账号和账号的属性193
10.1.2 访问Facebook账号和账号的属性199
10.2 使用Social Framework发布内容203
10.2.1 创建Stream控制器203
10.2.2 使用Tweet Composer视图发布消息到Twitter207
10.2.3 发送消息到Facebook209
10.3 使用Social.framework进行API调用210
10.3.1 使用SLRequest检索Twitter流210
10.3.2 获取Facebook信息213
第11章调试你的应用程序217
11.1 为什么调试很重要217
11.2 编译时候的问题218
11.2.1 错误219
11.2.2 警告219
11.3 运行时候的问题220
11.3.1 断点220
11.3.2 使用调试器221
11.4 帮助文档222
11.5 与帮助文档有关的技巧223
11.6 通过帮助文档了解应用程序图标224
第12章文件和文件目录管理227
12.1 iOS文件系统简介227
12.2 在磁盘中搜索常用目录229
12.3 读写文件的操作231
12.3.1 将文件写入到目录中231
12.3.2 读取文件内容233
12.4 在磁盘上创建目录234
12.5 遍历目录和文件235
12.5.1 简单地遍历目录和文件235
12.5.2 遍历并获取需要的信息236
12.6 删除文件和目录239

前言: 为什么要写这本书
苹果公司在2014年6月的WWDC(Worldwide Developers Conference,苹果全球开发者大会)上向公众展现了全新的iOS 8移动操作系统和Yosemite桌面操作系统。作为开发者,大会开幕之前的任何爆料,我都是不会错过的。在大会开幕的前一天,我得知本届大会的宣传标语为:编写代码改变世界(Write the Code. Change the World)。历届WWDC的宣传标语都是以全新、卓越、领先、创新、引领等作为关键词,而这次却使用了非常接地气的“编写代码”一词,心里感觉怪怪的。在WWDC结束的那一刻,我深深地体会到苹果为什么使用这个词,因为此时此刻,苹果做出了一个令所有程序员都为之惊讶的改变—推出了全新的程序设计语言Swift。Swift无疑是本届WWDC中贴近开发者的最大亮点。
为什么苹果要抛弃已经使用了几十年的Objective-C,而去开发一门全新的程序设计语言呢?按照苹果官方的说法,Objective-C这门语言太老了,它无法提供现代语言所具有的那些功能,而Swift语言具有现代、安全、快速等特点。其实在我看来,这是苹果极其强烈的控制欲在作怪。
在写作本书之前,我已经写过两本关于iOS开发的书,毫无疑问它们都是在讲如何使用Objective-C开发App的。可以说Swift是我写作这本书的最大挑战,并且它给我的身心造成了极大的摧残。因为在WWDC开幕之前,我基本上已经完成了第三本关于Objective-C图书的初稿。可谁又知道,Swift的出现如同晴天霹雳、飞来横祸,让我有种被秒杀的感觉。就这样放弃吗?不行,此时此刻,我想到了八九年前每晚玩《魔兽世界》的情景—不断地“跑尸”。为了完成自己的iOS开发三部曲,必须发扬当年“跑尸”跑不死的精神。总的算下来我的第三本书前后共写了两年的时间。
作为苹果公司独立发布的支持型开发语言,Swift语言的语法内容混合了Objective-C、JavaScript、Python的特点,语法简单、使用方便、易学,大大降低了开发者的入门门槛。同时Swift语言还可以与Objective-C混合使用,对于用惯了高难度Objective-C语言的程序员来说,学会Swift更不在话下!
Swift允许开发者通过更简洁的代码来实现更多的内容。在WWDC 2014发布会上,苹果演示了如何只通过一行简单的代码完成一个完整图片列表加载的过程。另外,Swift还可以让开发人员一边编写程序,一边预览自己的应用程序,从而快速测试应用在某些特殊情况下的反应。
相信对使用Objective-C语言开发过App的程序员来说,Objective-C有着诡异的语法,并且是一门与其他C语言风格迥异的编程语言,学习难度可想而知。但是,在过去的20年里,苹果只支持Objective-C,这迫使广大程序员不得不学习和使用艰涩难懂的Objective-C语言。
随着Swift语言的到来,这种简单、好用又安全的编程语言将吸引更多的开发者加入,让苹果软件生态圈更加繁荣。如此,“果粉”将可以在App Store和Mac Store中下载到更多称心如意的App。从某种意义上说,Swift语言是苹果的一项新的商业战略。
对Swift语言来说,相信大部分的读者都是从2014年6月开始接触的,而之后的几个月也应该在刻苦地学习Swift这门语言。就像实际生活中我们学习英语一样,精通英语的语法和使用英语进行相互沟通并不完全是一回事。学习程序语言也是如此,虽然程序员可以在短时间内掌握Swift的语法,但是使用它来开发App是另一个层面上的事情了。本书每一章都通过各种各样相对独立的项目,让读者了解iOS开发中最常用的几个方面的程序设计技能,包括Interface Builder、自动布局和Size Class、表格视图、导航控制器和标签控制器、远程访问及Facebook集成等。本书能让那些已经掌握Swift语言的程序员尽快上手开发实现各种功能的App,体验开发的乐趣。
读者对象
本书是为想通过学习基本的工具和技术,开发出具有实用功能的、可以在iOS平台上面完美运行的App的人所准备的。
本书读者主要为:
iOS设备的用户和爱好者。
iOS应用程序业余开发者,使用Objective-C开发过简单App。
iOS应用程序专业开发者,使用Objective-C开发过商业App。
已经掌握苹果最新的Swift语言,正准备进行项目开发的程序员。
开设相关课程的大专院校学生。
如何阅读本书
在阅读本书之前,需要具备以下几方面的知识和硬件条件。
面向对象的开发经验,熟悉类、实例、方法、封装、继承、重写等概念。
有Swift或Objective-C、C、C++的开发经验。
有MVC设计模式开发经验。
有简单的图像处理经验。
一台Intel架构的Mac电脑(Macbook Pro、Macbook Air、Mac Pro或Mac Mini)。
如果加入了iOS开发者计划,还可以准备一台iOS移动设备。
本书通过大量的实例项目来讲解如何使用Swift开发简单的应用程序,虽然每个App所实现的功能都不复杂,但是都能帮读者了解每章重点讲授的知识点和技巧,只有“打通”每个点以后,一个完美的App才能流畅运行。如果你是一名初学者,请一定从第1章开始学习。
本书内容共12章,下面概述各章内容。
第1章介绍了Swift语言的特性、Playground编辑器和iOS模拟器,重点介绍了开发iOS应用程序的集成开发环境Xcode。
第2章和第3章通过一个简单计算器应用程序向大家介绍Xcode的用户界面搭建工具Interface Builder、Outlet与Action关联、MVC设计模式、应用程序委托和视图控制器。
第4章通过购物应用程序向大家介绍如何使用故事板组织和管理视图。
第5章介绍表格视图的相关知识,包括与表格相关的委托协议,并且继续完善购物应用程序。
第6章介绍自动布局的相关知识,当程序员使用Interface Builder搭建App的用户界面时,往往要考虑不同分辨率和屏幕尺寸的设备,有时候一个场景需要做出10套左右的界面。但是通过自动布局可以让我们只需搭建好一套用户界面,就可以在所有的设备上完美运行。
第7章介绍集合视图的相关知识,通过在购物应用程序中使用集合视图来显示各种商品的缩略图。
第8章通过制作IMDb电影信息查询程序,向大家介绍如何使用Swift语言进行远程服务器调用,并将获取的XML数据进行整理并显示到屏幕上。
第9章使用Photos.framework框架实现在应用程序中获取照片库或摄像头所拍摄的照片。
第10章介绍如何在应用程序中整合Facebook和Twitter社交分享功能。
第11章介绍如何进行应用程序的调试。
第12章介绍如何在应用程序中进行文件和文件目录的管理。
勘误和支持
由于作者的水平有限,加之编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,特意留下联系的电子邮件liuming_cn@qq.com。你可以就书中的错误和我进行沟通,当然,遇到任何技术问题也可以与我联系,我将尽力为你提供最满意的解答,期待能够得到你的真挚反馈。另外,书中的资源文件可以从华章网站(www.hzbook.com)下载。
致谢
首先要感谢的是一直在背后默默支持我的老婆—刘颖。因为没有她就没有现在的我,非常感谢她在我写书的时候没有像平时那样唠唠叨叨,为我创造了一个轻松的环境。
感谢我身边的每一位充满创意和活力的朋友—张燕、卢红玲、秦琼、杨晓龙、陈雪峰、朱舸、赵顺利、吴永新,以及名单之外的更多朋友,感谢你们长期以来对我的支持和帮助。
感谢机械工业出版社华章公司的编辑杨福川老师,在这三年多的时间中你始终支持我的写作,你的鼓励和帮助引导我能顺利完成全部书稿。
最后感谢我的爸爸、妈妈、岳父、岳母、小舅子和小舅子的女朋友,感谢你们时时刻刻为我灌输信心和力量!
谨以此书献给我最亲爱的儿子—乐乐,以及众多热爱苹果公司的朋友们!
刘 铭