礼物说仿写

    首先我从网络上下载了liwushuo.ipa文件,通过解包得到里面的资源文件,后来我发现里面的图片并不全,找不到我想要的那几张图片,慢慢地我发现了一个名为assert.car的文件,通过Google得知这个是一个特殊的压缩文件,需要通过特定的工具可以进行解压,具体方法在如下网址,我使用Xcode编译好文件后,在用终端调用编译好的文件进行解包,放到指定的文件夹,然后洪荒之力得到解放,里面的图片全都尽收囊中。


解压后得到927张图片

从assert.car中解压得到图片的方法

http://blog.csdn.net/donwei8/article/details/52161384

我创建了一个名为Gift的工程,我用storyboard创建了四个TabBar,每个TabBar又嵌套了一个navigationbar,每个TabBar的图标设置未选中图片和已选中图片,并且通过增加tintColor的方法改变其选中时的颜色,而不是默认时的蓝色,导航栏的颜色我本来也想直接在storyboard中设置,通过设置背景颜色的功能时,我发现设置好的颜色是渐变的,并不能得到我预想的纯色的效果,这个方法行不通之后,我考虑到可能其他的界面也需要这样一个设置,所以我创建了一个GiftNavigationController的类,用来存放navigation的界面设置,并将每一个需要的navigation与这个控制器进行绑定,来达到共同设置的效果。这里用了一个取巧的方法,我把一个相同颜色的纯色图片直接当做背景放上去,就可以替换成自己喜欢的颜色啦。另外,我改变了状态栏的样式,将其改为UIBarStyleBlack,这样子的改变会影响状态栏中字的颜色,会变成白色。实现后的效果如下。


NavigationBar和TabBar的初步实现

整体的框架已经搭好,那么我们需要从官方的应用中获取到响应的JSON数据,就需要用到抓包软件,我使用的抓包软件是Paros,具体使用方法:http://jingyan.baidu.com/article/a3a3f811ebbd2d8da2eb8ac1.html



获取到的JSON数据网址

精选头部图片

http://api.liwushuo.com/v2/secondary_banners?gender=1&generation=2

精选轮播图片

http://api.liwushuo.com/v2/banners?channel=iO

精选

http://api.liwushuo.com/v2/channels/101/items_v2?ad=2&gender=1&generation=2&limit=20&offset=0

送女票

http://api.liwushuo.com/v2/channels/10/items_v2?gender=1&generation=2&limit=20&offset=0

海淘

http://api.liwushuo.com/v2/channels/129/items_v2?gender=1&generation=2&limit=20&offset=0

创意生活

http://api.liwushuo.com/v2/channels/125/items_v2?gender=1&generation=2&limit=20&offset=0

送基友

http://api.liwushuo.com/v2/channels/26/items_v2?gender=1&generation=2&limit=20&offset=0

送爸妈

http://api.liwushuo.com/v2/channels/6/items_v2?gender=1&generation=2&limit=20&offset=0

送同事

http://api.liwushuo.com/v2/channels/17/items_v2?gender=1&generation=2&limit=20&offset=0

送宝贝

http://api.liwushuo.com/v2/channels/24/items_v2?gender=1&generation=2&limit=20&offset=0

设计感

http://api.liwushuo.com/v2/channels/127/items_v2?gender=1&generation=2&limit=20&offset=0

文艺风

http://api.liwushuo.com/v2/channels/14/items_v2?gender=1&generation=2&limit=20&offset=0

奇葩搞怪

http://api.liwushuo.com/v2/channels/126/items_v2?gender=1&generation=2&limit=20&offset=0

科技范

http://api.liwushuo.com/v2/channels/28/items_v2?gender=1&generation=2&limit=20&offset=0

萌萌哒

http://api.liwushuo.com/v2/channels/11/items_v2?gender=1&generation=2&limit=20&offset=0

热门

http://api.liwushuo.com/v2/items?gender=1&generation=2&limit=50&offset=0

分类

热词

http://api.liwushuo.com/v2/search/hot_words

品类 风格 对象

http://api.liwushuo.com/v2/channel_groups/all

栏目

http://api.liwushuo.com/v2/columns?limit=11&offset=0

单品

http://api.liwushuo.com/v2/item_categories/tree


仔细观察这些API,可以发现有几个是相类似的,仅仅几个数字不一样,那么就可以放在一起进行解析。


下面进行网络层的编写,首先需要一个基础的网络层BaseNetworkManager作为父类,子类通过继承父类来获得父类的功能,子类可以自己添加自己独有的功能。此处发现少引入了一个名为CocoaLumberjack的第三方库,这是一个可以搭建自己日志的第三方框架。将CocoaLumberjack添加进podfile之后,因为有墙的缘故,我们需要使用 pod install --no-repo-update这条命令来更新pod库。用单例实现一个sharedAFManager,然后对GET和POST方法进行实现,完成对于基础网络层BaseNetworkManager的编写。

通过获取到的JSON数据,我们使用一款名为VisualJSON的软件进行解析,我们需要对获取到的每一个数据建立一个相应的模型与之对应,一般来说,通过看到一个字典,新建一个子类的方法进行解析。

VisualJSON
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容