花了一个月的时间,我做了一款天气app

对于初学代码的我来说,掌握类和属性已经花了我很长时间才搞懂。


首页-截止到发稿日期(2021.04.05)的版本
城市列表页-截止到发稿日期(2021.04.05)的版本

从大学时就有一个自己开发软件的愿望,但是看到蚂蚁一般的密密麻麻的看不懂的英文字符,加上专业课的些许压力,便把这个愿望放在了心里。直到后来做电商设计,做产品规划,发现都不是我擅长的,我很想亲手把自己的规划实现出来,不依赖于任何别人的技术或者审美。当我决定实施这一构想时,我已经全职在家准备研究代码,进入程序员的世界了。

不可否认的是,现在即使 App 做了出来,我对于 Swift 语言其实还是初入门的程度,大多数方法都是已经有的,我只是过了实现我的功能搬运了过来为我所用。但最后的结果显然还不错。

开端

关于天气预报,我一直用的是彩云天气,对于彩云的精准度以及使用习惯已经摸的很透彻,功能上来说,我个人觉得非常重要的一个是昨日天气一定要有,这样才会有一个更直观的温度对比。

在搜寻了很多免费 API 之后,我锁定了 OpenWeather ,一个强大的既可以提供当日天气和七日预报,又可以提供昨日天气的 API ,美中不足的是国内的话只支持主要城市,不过对于我目前的计划已经够用了。另外,使用了和风天气来提供降雨描述,和风天气也是一个质量很不错的api提供者。

架构与UI设计

之前一直对 MVVM 模式有所耳闻,这次也想运用上,于是在浏览了一些资料之后对于这个模式有了一定了解,接下来就是把 API 请求来的数据变成自己 App 可使用的数据,然后建立可视化设计,把数据绑定到画面中。在绑定前需要建立与视图对应的数据,于是我花了一晚上的时间把UI设计做了出来。


最初的UI设计稿

实现过程

我是在编写数据模型的过程中逐渐理清思路的,也可以说是给自己不断加需求的过程。在寻找解决方法的同时经常会看到新的功能,在权衡利弊之后对自己原来的需求有所增删。比如手动添加城市,拖拽删除,下拉刷新,每次以为项目就要结束了,又出现了新的目标,但我偏偏是有了目标就想拼命实现的那种人。😩


初期版本的城市列表

在界面方面我使用了 SwiftUI ,不得不说真的非常新手友好了,在使用的过程中我了解了闭包这一特殊的方法表现形式,也掌握了初步使用UIKit的经验(主要是为了弥补 SwiftUI 的某些不足)。第三方库方面,用到了 Lottie Animation,用来加载空状态下的动图。

定位方面,使用了 CLLocation ,利用经纬度获取城市信息以及请求api获取相关天气信息。

本地存储方面使用了 UserDefaults 。

重新审视设计

过程中与身边的设计师商讨,把UI和交互几乎推翻了,只保留了原来的数据结构,用了几天时间把主页改成了卡片式设计,这样风格更加简洁优雅。


改版后的主页

在这一版中,为了打造沉浸式体验,把展示和交互作为了第一目标,视觉上更加耐看。

总结

对于新手来说,我觉得最困难的是找到了解决方法但是自己用着出错,在战战兢兢和亦步亦趋中找到正解,如果能成功便是天大的荣幸。我也相信随着我的经验越来越丰富,我对代码语言的掌控力也会越来越自如,对底层逻辑的掌握也会越来越深刻。

这一版本把我目前想实现的功能基本都实现了,接下来就是使用和优化了。在这个过程中认识了各种各样的老师(youtube上的大神们真的是帮助太大了),我也希望继续在这条路上走下去。

如果你也喜欢我的设计,可以在下方留言,也欢迎提出其他意见。

如果你想让我加入你的团队,也请联系我以进一步洽谈。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容