工程图:
功能描述:
- 心脏跳动效果动画的Button,点击按钮可以跳转到重庆二手房区域地图(未实现)。
- 弹簧效果动画入场的的文本Label和Button,点击Button进入主界面。
- 下拉刷新,加载数据,利用UITAbleView以及代理配置UITableView,从而达到仿照QQ列表的形式展示数据的效果。(用到了插件MJRefresh来实现下拉刷新)
- 底部导航栏有三个Button,分别是展示可视化数据的图片,展示原数据的功能,搜索功能。(搜索功能只实现了界面布局,功能尚未实现)
- 展示可视化数据,利用UIScrollView来解决屏幕无法显示所有数据的问题,利用UIScrollView制作的滚动栏来控制要显示那部分的数据。
- 展示原数据,利用NSRange随时记录每一页的具体位置和长度,从而达到电子书的效果。
简单的代码分析:
-
开场的几个简单动画:
1.心脏跳动效果:利用定时器一定时间内改变控件的大小。
2.弹簧效果:通过改变控件x,y方向上的偏移值以及添加震动效果。 -
跳转到第二界面以及界面布局
1.创建一个继承UIViewController的SecondViewController类,设置头部导航栏。让底部导航栏可见,配置三个Button,用于界面切换。
2.创建一个继承NSObject的GroupModel的类,一个继承NSObject的AreaModel的类。将我们仿照QQ列表的形式所需要的数据封装成两个Model,将我们从plist文件读取的数据存放入Model的相关属性中。
3.实例化UITableView,通过接受Model中的数据。通过使用代理方法配置UITableView的每个段section有多少行row或者单元格cell,配置有多少个段section,配置每行ow或者单元格cell显示什么东西。创建一个继承UITableViewHeaderFooterView的MyHeaderView类,自定义我们所想要的头部。以及使用代理方法配置底部。
4.通过Podfile文件,以及终端相关操作下载MJRefresh插件,实现界面刷新。 -
跳转到可视化数据展示界面以及界面布局
1.创建一个继承UIViewController的PhotoViewController类。
2.创建两个UIScrollView的实例,一个用于放置对应区域Button以达到滚动栏的效果,另一个用来显示显示我们的可视化数据。点击第一个UIScrollView实例上对应区域Button会触发我们相应的事件。首先Button自身的字体变大变蓝,并且更改自身的位置移动到中间。第二个UIScrollView的实例会显示Button'对应的区域的可视化数据。我们通过所持有的可视化数据的大小来设置第二个UIScrollView的实例的最大可显示范围 -
跳转到原数据展示界面以及界面布局
1.创建一个继承UIViewController的BookViewController类。
2.实例化UILable类,布满全局,用于呈现数据。
3.读取数据,解析数据,定义一个NSRange结构体用于随时记录每一页的具体位置和长度。不断获取新的range对应的字符串,计算当前这些字符的宽高,计算高度是否超出label的显示高度。如果超过,保存这一页的范围,定位下一页,为下一页的计算做准备工作。
4.翻页操作:获取触摸点的坐标位置,判断是下一页还是上一页,设置简单的翻页动画。
出现的问题
- MJRefresh插件下载,不断失败,百度以及尝试得知还需要在Podfile文件中添加相关路径。校园网下载巨慢,预测一天多下完。换成流量,30分钟。
- block里面调用自己,导致循环应用,导致内存出错。添加
__block typeof (headerview) weakSelf = headerview;
解决问题。
缺陷
- 没有实现搜索功能。
- 没有实现链接地图功能。
- 原数据展示,数据过大后,加载很慢。
- 没有专门的UI设计组员,界面难看。
优点
- 利用了MJRefresh插件实现了下拉刷新。
- 较为成功的模仿了QQ列表的功能。
- 具有一定的动画效果。
- 代码的可移植性好,添加新的数据简单。