美文网首页iOS小项目iOS学习iOS开发精进
iOS小项目之第一弹- 壁纸天气

iOS小项目之第一弹- 壁纸天气

作者: ManoBoo | 来源:发表于2016-05-06 18:40 被阅读1439次

前言 :


1. 整体项目回顾
距离上次发表文章也有大概两个月的时间了吧,这段时间一直在忙着公司的项目。没有时间review代码(可能是比较懒吧😅,以后一定改正),这个"壁纸天气"前前后后大概花了10天时间,设计、开发都是我(PS:不好看就将就着看,我只是一个有情怀的程序猿😜),都是下班了写写,代码比较简单,结构也不是很复杂。

3. 做这个app的初衷
前面做的高仿项目都是高仿app,数据都是本地数据,这次想玩玩网上的,刚开始只是看到百度ApiStore上有免费的天气接口,我就试着用了一下,感觉还不错,那就干脆写个天气app玩玩吧。我就想要一个简单的app,就显示天气就好,其余过多的动画效果不需要,整体的页面无非就是UITableViewUICollectionView和一些 UILabelUIButton的组合,理清楚思路就很好做了,其实UI搭建本身就是一件简单的事情,难的在于业务和逻辑的处理上。

3.为什么叫壁纸天气?
为了弥补画面的突兀感,主要是大片大片的白,我也不懂如何配色,我都用一张图片当做背景,O(∩_∩)O~~,所以我就起名叫做"壁纸天气"了。


项目的整体介绍:


1. 功能简介:

Tips:功能比较少,有以下几个:

①. 显示天气:首页显示添加过的城市的天气
②. 添加城市: 仅限与国内。
③. 管理已经添加的城市

2. 功能展示:

①. 天气展示主页面 :类似于首页
首页展示.gif
点击每一个城市,弹出天气详情View,会显示该城市的历史天气和预测天气,其中今日天气还有诸如感冒指数、穿衣指数等一些提示。
天气详情.gif
②. 添加城市

输入城市中文名,然后展示搜索结果,选择要添加的城市即可。

添加城市.gif
③. 管理已经添加的城市

点击X删除选择的城市,


管理城市.gif
③. 关于作者(PS:这一部分其实不算功能了吧😁)
关于作者.gif

3. 项目的实现方法:

①. 开发过程中,大多数采用xib,我从纯代码的海洋里爬出来,看到了xib的新大陆😄,xib使用还是很方便的,代码量也少了很多,可是我依然喜欢纯代码😂
②. 数据的来源、请求与处理:

-----1.数据来源于百度ApiStore中的两个免费的天气接口,返回的数据都是JSON字符串:

百度接口链接

第一个:根据城市中文名称 查询城市ID
第二个: 根据城市ID查询近7天的天气
图片展示:

A5873AE1-3A82-496D-AE04-A1FEC252BFFE.png
-----2.数据请求:
使用NSURLSession对应两个接口 封装了两个请求,没有使用第三方库。
-----3.数据处理:
① 根据JSON字符串写了对应的模型,使用MJExtension解析JSON,并转成对应的model
②数据存储采用NSUserDefaults,对于项目的城市的存储操作封装了一个类CityManager,管理所有的存储、读取操作(比如 返回热门城市列表、返回当前已选择的城市)
Tips:由于NSUserDefaults不能存储自定义对象,所以需要先归档后存储

项目感想:


好吧,还没有怎么写就到项目感想了,这个项目结构非常简单,东西也比较少,但是麻雀虽小、五脏俱全,本地存储、网络请求都有,主要是这个方正喵呜字体真的非常萌啊,基本上所有的文字都采用的这个字体。由于精力有限,对应各种天气的图片并不全,只有几个大分类,比如''小雨"、"中雨"、"大雨"我都用的一个图片˜😂,所以如果觉得粗糙,请见谅,哈哈。

正儿八经的说,做完这个小app,最主要的一个感想就是 "做很简单,做好就不容易了"

好吧,第一弹就到这里了

下一弹预告 :

一个黑白相间的、考验手速的小游戏,

Github下载地址:


点击去我的Github转转,觉得不错就赏个★

相关文章

网友评论

  • 马上上包:博主,那个免费的接口好像不能用啦
  • o0下一站生活0o:改个皮肤,拿去上架,楼主会打我吗?
    ManoBoo:@o0下一站生活0o 哈哈,随意
  • VVik:可以有很多地方我需要滴,谢谢分享
    ManoBoo:@VVik 有收获就好啦
  • 芙箩娅:给星了!源码我就先收下看了
    (说的好像是付过钱了一样……)
    芙箩娅:前辈,有个比较抽象的问题,UI搭建跟跳转逻辑那边基本还算理的顺,动画效果一开始有点懵圈,连查带蒙也看懂不少了,但model那边复写的时候很头疼(比如 CityData CityModel 这样嵌套在一个文件内),三绕两绕就绕晕了…有点被打击到了。
    ERR...已经忘了要问什么了… :joy:
    芙箩娅:发现一个小问题,连续快速的点击X号删除城市的时候会崩,看了下似乎是因为子线程代理方法执行顺序出了点问题。我比较蠢,只能查到错误,不知道怎么解决……
    ManoBoo:@芙箩娅 这个源码比较简单~
  • 28aed6e79eac:大家下载过之后 linker command failed with exit code 1 (use -v to see invocation)错误怎么解决的啊???想运行看看效果 :pray:
    ManoBoo:@耍流氓的兔兔 稍等,上午到公司了看下:smile:
    28aed6e79eac:@ManoBoo linker command failed with exit code 1 (use -v to see invocation)
    ManoBoo:可以把错误详情告诉我吗,上面的:smile:
  • 浮桥小麦:作为小白很喜欢楼主代码里面都写有一些注释,我觉得这点对新手很好
    ManoBoo:@浮桥小麦 写注释不仅方便别人,以后review代码的时候也很快就能找到对应的地方
    浮桥小麦: @ManoBoo 我基础比较差,看别人的代码,没有注释有些逻辑交互看不懂,就比较苦恼
    ManoBoo:@浮桥小麦 写注释成了一种习惯:smile:
  • neobuger:请问这个请求 我想用AFN 发送, 可是总是提示apikey 有问题, 我是将这4个参数全部写到字典里, 用 AFHTTPSessionManager 发送GET 请求, 求教
    ManoBoo:@neobuger 哪里有四个参数。。里面有两个接口,你说的哪个
  • 阿龙欧巴:几天没看简书,结果大牛都成大黄牛了
    ManoBoo:@阿龙欧巴 夸奖了哈 我还是白菜 再学习学习争取成为 泡菜 :grin:
    阿龙欧巴: @ManoBoo 就是大牛中的大牛,哎,这么多天,还没看完一个APP😭😭(得捉急起来了)
    ManoBoo:@阿龙欧巴 大黄牛是什么鬼 :joy:
  • SwiftYang:很精致,“做很简单,做好就不容易了”,很多可以学习的细节。Star+1 :smiley:
    ManoBoo:@SwiftYang 继续加油
  • jordanYang:star必须的
    ManoBoo:@jordanYang 3QU:smile:
  • jordanYang:楼主真腻害.
    ManoBoo:@jordanYang 夸奖了哈 :grin:
  • _Sven:我是不会把赏钱还给你的! :sunglasses:
    ManoBoo:@callmeJoeJoe :joy:不在乎
  • 单腿行走的大象:楼主你的接口地址有请求次数的限制吗?
    ManoBoo:@单腿行走的大象 http://apistore.baidu.com/apiworks/servicedetail/112.html 这个地址里面有5、6个接口,看你需要哪个
    单腿行走的大象:@ManoBoo 地址能发来下,我也想做个
    ManoBoo:没有哦
  • NEWWORLD:好棒哦 :kissing_heart:
  • f02229050eda:看着很棒:kissing_heart:

本文标题:iOS小项目之第一弹- 壁纸天气

本文链接:https://www.haomeiwen.com/subject/dbljrttx.html