其实仿喜马拉雅FM很早就开始了,从我刚接触iOS开始,就开始仿做了一部分,眼尖的人都从我的github找到了那个项目。随着找到实习iOS工作,仿写就落下了,但唯一的收获就是给过去打了一个响亮的耳光,因为刚入门没注意一些变量的命名,看着以前的view1,view2,button1,button2有一股想哭的冲动。

项目的缺陷很多,除了命名垃圾之外,还有项目框架的搭建也很垃圾,项目目录结构还算清晰,但在 Finder 中的目录结构就惨不忍睹了。如果不习惯的可以使用synx使工程目录和Finder目录同步。附上简友教程,在这里也推荐一篇阿里kuailejim写的文章:iOS移动端架构的那些事。

简单说一下界面(其实这个项目在当时我看来提高了对iOS的理解,自定义视图练练手也不错),先附上学习iOS前项目地址,可以查看实现它的commits。注意事项:前项目是用CocoaPods管理第三方的,所以不能运行的情况下记得update pods.


首页

发现 – 首界面 – 推荐

这个界面主要使用了第三方框架WMPageController,最主要的是使用了MVVM的设计模式,具体请下载源码参考。

发现 – 首界面 – 分类

这个界面在源码中是自定义cell(内部button), 反正比我现在想的复杂多了,当时还要计算划分。实习久了,知识巩固牢了,让我现在做的话应该是cell套collectionView。

发现 – 首界面 – 榜单

榜单跳转

这个页面没什么特别的,无非就是自定义cell,但对比之前做的多了跳转,跳转的时候注意的地方就是还要根据各个榜单的分类进行相应的跳转。

首界面跳转分类页面

首界面分类跳转 – 子分类界面

这个界面使用了WMPageController来实现复用。


主播页

 

主播页

这个也是使用了自定义cell,三个按钮回调cell的代理事件,而进行Controller跳转主播详情页。还有就是复用了tableViewCell的分组头(viewForHeaderInSection)。对比之前学习版本加了一个主播本地关注的功能。使用的是plist文件存储,但服务器是有字段保存关注的,所以不能让关注按钮根据服务器给的字段value改变selected状态。

主播 – 主播详情页

这个界面就没什么特别了,就是自定义了一个主播顶部头视图topView(xib)作为tableView的子视图。

[self.tableView addSubview:_topView];

self.tableView.contentInset = UIEdgeInsetsMake(300,0,0,0);


个人中心页

 

我的 – 登录界面

这个界面用了别人的素材,超萌的一个登录框。登录界面的数据是在Class-我-Controller-UserAccount.plist文件中。如果还不清楚先使用账号:admin ;密码:admin

我的 – 个人中心页

功能没做什么,最主要的是下载的声音和关注的主播这两个功能(都是通过本地plist文件存储信息)。让我印象深刻的是为了做好它我在答辩前一天熬夜把下载后本地存储并本地播放这个功能完善了,但第二天老师竟然没给我展示这个模块,有种受打击的感觉。但想想大学四年能认可你的人太少了,毕竟未来的舞台并不在大学里面。


写在后面的话

大学随着这个毕业设计的完成以及答辩就画上了圆满的句号。大学的时光总是很短暂,四年的时间飞逝,程序猿唯一告别单身的机会即将结束,实习期也体验到了外面社会的残酷与现实,正好赶上了iOS和Android移动端的末班车,工作异常的难找。因为回学校办理毕业等繁杂手续不得不辞去上一份iOS实习生的工作。回学校也没有停下学习,一直在紧跟iOS大牛群中群友的脚步,学习了RunTime入门,Swift语言,甚至开始想了解前端后端的实现。心中早已有计划就不怕路远,但路漫漫其修远兮,总还是需要吃饭的。

在此也顺便求份工作,朋友们有工作介绍的可以推我过去。我在广州,iOS开发也有2年左右的经验,工作经验如果算上加班时间,满打满算一年多了。工作中的项目多为外包,所以我手上的项目也很多,也做过前公司自己的上线项目。实习阶段最大的收获是团队开发和xib的快速开发,当然还有就是命名规范化!

注意事项:此源码仅适合新手,查看源码过程中出现头晕目眩,心中有想骂人的冲动等不适情况,请将源码放入废纸篓并清空。

源码:https://github.com/HansRove/XiMaLY

iOS仿喜马拉雅FM做的毕业设计及总结(含新手福利源码)的更多相关文章

  1. (https专业版)2018年1月5日高仿互站仿友价T5虚拟交易+实物交易商城-站长交易源码送手机版程序10套模版+首页微信登陆+头部下拉导航

    (https专业版)2018年1月5日高仿互站仿友价T5虚拟交易+实物交易商城-站长交易源码送手机版程序10套模版+首页微信登陆+头部下拉导航 首页支持微信登陆,只有第8套模板支持(endv模板),后 ...

  2. iOS涂色涂鸦效果、Swift仿喜马拉雅FM、抽屉转场动画、拖拽头像、标签选择器等源码

    iOS精选源码 LeeTagView 标签选择控件 为您的用户显示界面添加美观的加载视图 Swift4: 可拖动头像,增加物理属性 Swift版抽屉效果,自定义转场动画管理器 Swift 仿写喜马拉雅 ...

  3. android指纹识别、拼图游戏、仿MIUI长截屏、bilibili最美创意等源码

    Android精选源码 一个动画效果的播放控件,播放,暂停,停止之间的动画 用 RxJava 实现 Android 指纹识别代码 Android仿滴滴打车(滴滴UI)源码 Android高仿哔哩哔哩动 ...

  4. 基于vue与vux做的可滑动tab组件(附源码)

    背景 前不久,刚完成了一个商品列表+购物车功能的页面,因为一级商品分类在顶部tab中显示,可滑动,间距可定制,如下图所示: 定制的tab需求如下: 1. 每个tab-item的间距是相同的,可定制 2 ...

  5. 结合别人的文章,做RocketMQ的一点原理分析,结合源码(尽量)----未完待续

    Broker 与Namesrv的关系 1.从namesrv获取配置信息 /** * BrokerConfig类 * * broker每隔30秒(此时间无法更改)向所有nameserver发送心跳,心跳 ...

  6. 仿天猫淘宝的ShopNC好商城原生Android 客户端源码项目

    开发环境:Android Studio 2.0 | Gradle 2.0.0最后更新:2016-04-28 简介:基于好商城V4的Android客户端 目前已完成的功能(概述): 1.启动页 -> ...

  7. [HMLY]5.模仿喜马拉雅 FM

    项目介绍: 文:HansRove(github)XiMaLaYa-by-HansRove- 仿做喜马拉雅, 对AVFoundation框架的一次尝试   软件环境: iOS9.1硬件环境: Mac O ...

  8. 仿微信的IM聊天时间显示格式(含iOS/Android/Web实现)[图文+源码]

    本文为原创分享,转载请注明出处. 1.引言 即时通讯IM应用中的聊天消息时间显示是个再常见不过的需求,现在都讲究用户体验,所以时间显示再也不能像传统软件一样简单粗地暴显示成“年/月/日 时:分:秒”这 ...

  9. ios源码-ios游戏源码-ios源码下载

    游戏源码   一款休闲类的音乐小游戏源码 该源码实现了一款休闲类的音乐小游戏源码,该游戏的源码很简单,而且游戏的玩法也很容易学会,只要我们点击视图中的grid,就可以 人气:2943运行环境:/Xco ...

随机推荐

  1. 翻译-让ng的$http服务与jQuerr.ajax()一样易用

    Make AngularJS $http service behave like jQuery.ajax() 让ng的$http服务与jQuerr.ajax()一样易用 作者zeke There is ...

  2. Android 内核基本知识

    Android基本知识 Android基本知识.... 1 1. 各版本系统特性.... 1 2. View绘制流程.... 2 3. 动画体系.... 2 4. 事件分发机制.... 3 输入消息获 ...

  3. 如何使用ASP.NET Web API OData在Oracle中使用Entity Framework 6.x Code-First方式开发 OData V4 Service

    环境: Visual Studio 2013 + .Net Framework 4.5.2 1.新建项目 2.安装OData,ODP.NET 安装的包: 下面是部分代码: using System; ...

  4. Java中的多线程总结(转)

      1.多线程概述 当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程.主要以下几个优点: 线程之间很容易实现共享内存 创建线程代价较小 Java语言内置多线程功能支持 2.线 ...

  5. 如何用extjs显示一个已经存在的页面

    最近碰到了一个需求: 画面上有个按钮,点击了按钮之后,弹出一个窗体(window),而该窗体(window)上显示的内容是某个系统的内容,如下图所示 查了好长时间的extjs的帮助文档,没有找个现成的 ...

  6. [BZOJ 3209] 花神的数论题 【数位统计】

    题目链接: BZOJ - 3209 题目大意 设 f(x) 为 x 的二进制表示中 1 的个数.给定 n ,求 ∏ f(i)     (1 <= i <= n) . 题目分析 总体思路是枚 ...

  7. 关于判断变量是否为null的顺序问题。

    if("y".equals(other)){ } 其中,other字符串变量可能为Null,可以加一个null判断或者将常量写在前面,变量写在equals后面.如果将变量other ...

  8. [LeetCode#110, 112, 113]Balanced Binary Tree, Path Sum, Path Sum II

    Problem 1 [Balanced Binary Tree] Given a binary tree, determine if it is height-balanced. For this p ...

  9. weblogic jsp 不生效解决方法

    1. 检查weblogic.xml配置文件,其中如果有: <jsp-descriptor> <jsp-param> <param-name>pageCheckSec ...

  10. 【转】EditText大小(长宽)的多种设置方式----不错

    原文网址:http://orgcent.com/android-edittext-ems-layout-minwidth-maxheight/ EditText大小的设置有多种方式,要想对每种方式运用 ...