zoukankan      html  css  js  c++  java
  • 仿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氪 源文件地址

                       视频播放器:源文件地址

  • 相关阅读:
    四则运算(判断正误)
    Right-BICEP要求四则2的测试用例
    《构建之法》阅读笔记02
    第二周的学习进度
    四则运算(升级)
    构建之法阅读笔记01
    新手安装使用codeblocks
    新的一年你该如何起飞
    中国国家图书馆 注册后可以免费使用 维普等多个数据库资源
    c++学籍管理系统v1.10
  • 原文地址:https://www.cnblogs.com/linmingjun/p/5307936.html
Copyright © 2011-2022 走看看