Swift5 + MVVM + 文艺复兴微博(纯代码)

二丫头
• 阅读 518

背景: 现在越来越多的公司会尝试用 Swift 做 native 的开发了,很多之前习惯用 Objective-C 的开发,有新项目启动的时候,也会想说用 Swift 试试。如果从 2020年编程语言排行榜 上看的话,Swift的热度也领先 Objective-C 10个身位了。而我们现在公司所做的项目,也是用 Swift 开发的,虽然说之前有些 OC 基础,写起 Swift 功能也是能实现,但是代码不是很优雅,不够 ‘Swift Style’。 熟练度不够的话,很多 Swift 的高级写法还得去翻文档才知道什么意思,所以就打算从0单排一个Swift的项目,而微博正好有 开放API , 所以这里就选择它了。

主页界面

Swift5 + MVVM + 文艺复兴微博(纯代码)

表情界面
Swift5 + MVVM + 文艺复兴微博(纯代码)

项目架构
Swift5 + MVVM + 文艺复兴微博(纯代码)

有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS QQ交流群:651612063 进群密码111 ,如果你在技术上遇到问题也可以在群里交流 ,群文件有BAT,阿里面试题、面试经验, 大家一起交流学习成长!我也会在群里跟大家交流。

Swift5 + MVVM + 文艺复兴微博(纯代码)
点击进群密码:111

项目功能

原创微博功能
转发微博功能
Emoji表情功能
撰写微博界面
新特性功能
消息提醒功能
多图展示功能
富文本功能
多图展示功能
下滑自动加载功能
上/下拉刷新功能
OAuth 授权登录功能
已完成
发布微博功能(API已不提供)
图片上传功能(API已不提供)
消息功能
发现功能
我的功能
SVProgressHUD 提醒功能
用到的技术点

TableView高度缓存
SDWebImage圆角处理
FMDB数据缓存
OAuth授权
单张图片的高度计算
Cell滚动自动加载更多
撰写页面的动画处理
发布界面的Emoji处理
多图的展示

不足点

Weibo 的 App 包里的素材图片实在太多了,找到完全匹配的要花费超多时间,所以有的资源不是很匹配,或者不是当前最新的
该Demo使用了FMDB,其实微博这种时效性毕竟高,且有较高政治敏感度的,不适合用本地缓存, 这里只是一个 FMDB 使用的简单案例,更适合更新不用太及时,或者类似qq这种接收服务端推送消息的app.
这个文艺复兴版的微博(2016年的),现在的微博已经有了较大的变动,且很多API接口现在已经不开放了,所以暂时先用此怀旧版本.
SVProgressHUD 在Swift5.0会crash,所以这个app里没有 toast 功能,坐等修复…
Gif图片由于现在门户网站只能传 < 5M 的,所以看上去毕竟模糊,实际效果会比 Gif 图片好得多,建议用真机跑一下试试~
这版本来打算用本人拙劣的英文写全篇的注释,后来由于本人 Chinelish 水平有限,毕竟复杂的逻辑/业务就用中文写了(求轻喷)

使用的第三方库

AFNetworking
SDWebImage
YYModel
SnapKit
FMDB
pop
HMPhotoViewerController
工具分享

图片素材获取: cartool

取色标注工具: MarkMan

数据库工具: Navicat

画图工具: MindNode

总结

从事Swift 开发已经有一段时间
,发现没有一定量的代码积淀(踩坑)还是不行,所以就打算自己写一个入门的纯Swift App。这个项目是本萌新的第一个发布swift项目,有些粗糙,但是如果新手作为 Swift 上手,入门的,其实应该还可以。该项目基本都是用的 “纯代码+纯Swift” 的方式写的,用的也是尽量新的 API, 萌新们想玩的话感觉还是可以上手的。

最近发现,时间管理 真的很重要,很多事情,一开始以为自己做不到,后面每天把时间分配好,学习和琢磨 ,不会的与前辈交流,终于不负有心人, 把这些搞好了, 每个人都不要放弃。
————————————————
点击进群 密码:111
Swift5 + MVVM + 文艺复兴微博(纯代码)

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
待兔 待兔
4年前
Swift开发-OC与Swift混编以及纯Swift编码所遇到的问题(一)
前言:最近一段时间比较忙,公司项目比较多,直到现在年后过来以后总结一下之前项目中遇到的问题,以及自己使用Swift开发所遇到的坑。现在大家都知道Swift已经渐渐趋于完善,以后很有可能会替代ObjectC成为主流的iOS开发语言,所以各位以后还想从事iOS开发的程序猿(媛)们,早作准备吧!今天我们主要说一下ObjectiveC和Swift混编
九路 九路
4年前
Swift开发-OC与Swift混编以及纯Swift编码所遇到的问题(一)
前言:最近一段时间比较忙,公司项目比较多,直到现在年后过来以后总结一下之前项目中遇到的问题,以及自己使用Swift开发所遇到的坑。现在大家都知道Swift已经渐渐趋于完善,以后很有可能会替代ObjectC成为主流的iOS开发语言,所以各位以后还想从事iOS开发的程序猿(媛)们,早作准备吧!今天我们主要说一下ObjectiveC和Swift混编
Karen110 Karen110
3年前
​一篇文章总结一下Python库中关于时间的常见操作
前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这