仿36氪(iOS版附源代码)
2016-03-22 18:19
323 查看
前言:
这是我2016年3月开始写的,利用课余时间全心投入的项目,本以为是凭着轻松愉悦的方式来学习的,中途遇到bug解决bug的时候,每天晚上几乎都是写到寝室关灯,还有一次使用Github不当写了五天的代码一夜恢复到解放前,现在每次Commit都会把项目复制一份,项目使用OC写的,主要是想记录下OC项目整个过程,在过渡学习Swift,写的还不完善,不足之处还请见谅,由于时间比较匆忙,这个月还剩下十来天忙着考试,4月份会把后续功能实现,这是第一次把以项目的形式分享到博客。项目描述(附源代码底部):
开源项目为36氪,一款提供股权类互联网金融平台APP,项目为纯代码,XIB+代码开发,所有的数据都是通过Charles抓包工具获取到的, 图片通过Extractor解压得到(部分图片找不到),视频播放器是通过36氪开源播放器(采用View+MPMoviePlayerViewController)改进的播放器使用的是View + AVPlayer,支持播放mp4、mov等格式,网络和本地视频同时支持,支持Cell中全屏和小屏自动感应旋转屏幕,参考WMPlayer,无需第三方库支持。效果图:
首页效果侧滑效果
其他模块首页效果
氪TV首页效果
新闻内容页效果
轮播页内容效果
评论页效果
搜索页效果
离线缓存
项目当中用到的缓存方式是JSON数据以文件的形式保存,因为要放到文件当中存储,所以在这里JSON要经过一定的转化,如果不经转化取出来的字典数组是为空的,我的方式是这样的,具体可以参考HttpRequest文件和NewsVC
保存的过程:NSDate->NSString
取出过程 NSString->JSON对象序列化-》(字典数组)NSArray->模型数组(NSSArray)
值得注意点:
数据解析:[{}]格式 使用 字典数组 -> 模型数组 ,{} 字典 转一个模型
AVPlayer:可以通过videoGravity有三种形式设置播放形AVLayerVideoGravityResizeAspect,AVLayerVideoGravityResizeAspectFill,和AVLayerVideoGravityResize。默认的是AVLayerVideoGravityResizeAspect:会出现顶部和底部分别有20大小的间隙,AVLayerVideoGravityResize(项目当中用到的):拉伸,以填补CALayer的界限AVLayerVideoGravityResizeAspectFill:保留长宽比;填补CALayer的界限。
解决网速慢的问题:(用寝室CMCC播放视频的时候会出现视频停止的效果,需要再次点击才可以继续播放,在卡在点的情况),我的解决办法是这样的,通过判断当前时间和播放时间进行比较,如果一致则出现停顿情况,具体可以详见项目
讨论页Cell自适应:我的思路是这样的,首先cell先计算好文本高度,然后将高度的值赋给heightLabel(用于保存每个cell的高度),控制器在从heightLabel取出(这样减少一次在heightForRowAtIndexPath方法在计算一次高度)
新闻内容页:顶部用户简介是一个cell,新闻内容页是一个经过嵌套webView的cell
ESJsonFormat-Xcode在开发中用到这个工具,所以文件命名的时候不规范,还请见谅
项目是独立开发的,目前还在校园,QQ363905547 有问题可以一起探讨
希望顺便点一下右上角的⭐️Star ,朋友的鼓励和支持是我继续分享的动力
github地址 仿36氪 源文件地址
视频播放器:源文件地址
相关文章推荐
- iOS9以后label上的文字frame与之前的frame有出入。
- iOS开发: 做真机测试时 遇到的 bitcode 的问题
- iOS开发关于三方框架的使用注意的地方,跟新到最新的SDK
- iOS 利用 strtoul 进行 进制转换
- iOS 最新版 CocoaPods 的安装流程
- iOS 打包错误 command..exit code 127...
- IOS开发之—程序截图
- IOS加减选择器
- iOS 之新特性界面
- iOS开发之即时通讯之Socket(AsyncSocket)
- Xcode7.2与iOS9之坑 (持续更新)
- 一些ios的记录
- iOS学习--老菜鸟的storyboard学习之路
- iOS开发——model类模板(过滤null和ID)
- 贝塞尔曲线与CAShapeLayer
- iOS从crash信息中查找崩溃原因
- iOS --高仿QQ空间页面
- IOS-视频
- iOS-极光消息推送的快速实现
- IOS 提交审核如何勾选选项