仿36氪(iOS版附源代码)
前言:
这是我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氪 源文件地址
视频播放器:源文件地址
仿36氪(iOS版附源代码)的更多相关文章
- 一款仿36氪iOS版APP源码
Features 离线缓存 解决视频播放器的网速慢卡顿 视频播放器调用简单 cell自适应高度 cell中嵌套webView cell中嵌套webView 条件实时搜索 Known problems ...
- 《IT蓝豹》高仿花田ios版标签移动效果
高仿花田ios版标签移动效果,长按每一个item拖动到自己想要位置后,后面位置移动补全效果 . 本项目适合研究gridview拖拽效果的朋友下载. 学习android动画特效. 本项目主要靠DragG ...
- 高仿百度传课应用客户端源码iOS版
高仿百度传课iOS版,版本号:2.4.1.2 运行环境:xcode6.3 ios8.3 (再往上系统没有测试) 转载请注明出处,不可用于商业用途及不合法用途. 如果你觉得不错,欢迎 star 哦 ...
- 高仿美团iOS版,版本5.7
高仿美团iOS版,版本:5.7 iOS技术交流群:112365317 github链接:https://github.com/lookingstars/meituan 假设你认为不错.欢迎star 哦 ...
- 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转
效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载]) 本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较 ...
- 手把手实现微信网页授权和微信支付,附源代码(VUE and thinkPHP)
wechat github 手把手实现微信网页授权和微信支付,附源代码(VUE and thinkPHP) 概述 公众号开发是痛苦的,痛苦在好多问题开发者文档是没有提到的,是需要你猜的. 在开发过程中 ...
- 微信聊天记录查看器(程序+源码) - iOS版
本文版权归cxun所有,如有转载请注明出处与本文链接,谢谢!原文地址:http://www.cnblogs.com/cxun/p/4338643.html Updates [2016.10.14]感谢 ...
- 微信团队分享:极致优化,iOS版微信编译速度3倍提升的实践总结
1.引言 岁月真是个养猪场,这几年,人胖了,微信代码也翻了. 记得 14 年转岗来微信时,用自己笔记本编译微信工程才十来分钟.如今用公司配的 17 年款 27-inch iMac 编译要接近半小时:偶 ...
- 36氪新风向 | 三个月估值普涨三倍,你未来的RPA机器人同事正在路上
http://www.sohu.com/a/320208242_114778 2019 年 4 月,关注 RPA 赛道的投资人 Kevin(化名)就发现,仅仅过了一个春节,自己所在的早期基金已经投不起 ...
随机推荐
- IE WebDriver 因保护模式无法启动的解决 (转载)
现在Win7 已经应用很多了,即使是最原始的Win7 也是IE8,最新的patch后,都升到了IE11 Win7下预装高版本IE的情况下,启动IE WebDriver可能会出现: org.openqa ...
- J2SE知识点摘记(九)
1. 线程操作的一些方法 方法名称 方法说明 public static int activeCount() 返回线程组中目前活动的线 ...
- 柯南君:看大数据时代下的IT架构(9)消息队列之RabbitMQ--案例(RPC起航)
二.Remote procedure call (RPC)(using the Java client) 三.Client interface(客户端接口) 为了展示一个RPC服务是如何使用的,我们将 ...
- 自定义UITextField(UITextField重写)
// CustomField.h #import <UIKit/UIKit.h> @interface CustomField : UITextField @end // CustomFi ...
- dataGuard主备库角色切换
切换顺序: 先主库后备库 --查看主库可切换状态: SQL> select switchover_status from v$database; SWITCHOVER_STATUS ------ ...
- #include <memory>
1 auto_ptr 2 unique_ptr 1 auto_ptr C++的auto_ptr所做的事情,就是动态分配对象以及当对象不再需要时自动执行清理. 使用std::auto_ptr,要#inc ...
- Effective JavaScript Item 36 实例状态仅仅保存在实例对象上
本系列作为EffectiveJavaScript的读书笔记. 一个类型的prototype和该类型的实例之间是"一对多"的关系.那么,须要确保实例相关的数据不会被错误地保存在pro ...
- 如何在其他类中实现继承自CFormView类的对象
今天项目开发中,我们创建了一个对话框资源,并创建了一个派生自CFormView的类(假设为CMyClassDlg)来管理它. CMyClassDlg.h #pragma once // CMyClas ...
- 如何利用Github Pages展示自己写的项目
接触github很久了,自己搭建过hexo博客,但是对于web项目托管github pages感觉很懵,所以在此总结分享给有需要的亲们. 教程开始: 1.创建一个新库 2.给库命名 3.创建新库后点击 ...
- JavaScript引用类型之Array数组的toString()和valueof()方法的区别
一.转换方法 1.在JavaScript中几乎所有对象都具有toLocaleString().toString和valueof()方法,因为,所有的对象都继承自Object,而前面所说的方法都是Obj ...