登录 立即注册
金钱:

Coding-iOS

来自: Torr 分类: iOS精品源码 上传时间: 2016-12-30 14:53:16
Tag:Coding 完整项目 iOS 学习项目

项目介绍:

Coding-iOS

Coding_iOS客户端项目介绍

编译环境:Xcode-Version 8.0 (8A218a)

让项目跑起来先

项目里用到了 CocoaPodsCarthage,如果没有安装的话,需要先自行安装。

Clone 代码后,初次执行前,需要双击运行根目录下的bootstrap脚本。这个过程涉及到下载依赖,可能会有点久,需耐心等待。

Tip:由于用到了 submodule,所以必需要把 git 仓库 clone 到本地,而不是只点击‘下载’按钮下载 zip 文件!!!

精彩项目任务管理项目文档代码托管趣味冒泡
图片1图片2图片3图片4图片5

下面介绍一下文件的大概目录先:

.
├── Coding_iOS
│   ├── Models:数据类
│   ├── Views:视图类
│   │   ├── CCell:所有的CollectionViewCell都在这里
│   │   ├── Cell:所有的TableViewCell都在这里
│   │   └── XXX:ListView(项目、动态、任务、讨论、文档、代码)和InputView(用于聊天和评论的输入框)
│   ├── Controllers:控制器,对应app中的各个页面
│   │   ├── Login:登录页面
│   │   ├── RootControllers:登录后的根页面
│   │   ├── MeSetting:设置信息页面
│   │   └── XXX:其它页面
│   ├── Images:app中用到的所有的图片都在这里
│   ├── Resources:资源文件
│   ├── Util:一些常用控件和Category、Manager之类
│   │   ├── Common
│   │   ├── Manager
│   │   ├── OC_Category
│   │   └── ObjcRuntime
│   └── Vendor:用到的一些第三方类库,一般都有改动
│       ├── AFNetworking
│       ├── AGEmojiKeyboard
│       ├── ASProgressPopUpView
│       ├── ActionSheetPicker
│       ├── FontAwesome+iOS
│       ├── MJPhotoBrowser
│       ├── MLEmojiLabel
│       ├── NSDate+Helper
│       ├── NSStringEmojize
│       ├── PPiAwesomeButton
│       ├── QBImagePickerController
│       ├── RDVTabBarController
│       ├── SMPageControl
│       ├── SVPullToRefresh
│       ├── SWTableViewCell
│       ├── UMENG
│       ├── UMessage_Sdk_1.1.0
│       ├── XGPush
│       ├── XTSegmentControl
│       └── iCarousel
└── Pods:项目使用了[CocoaPods](http://code4app.com/article/cocoapods-install-usage)这个类库管理工具

再说下项目的启动流程:

在AppDelegate的启动方法中,先设置了一下Appearance的样式,然后根据用户的登录状态选择是去加载登录页面LoginViewController,还是登录后的RootTabViewController页面。

RootTabViewController继承自第三方库RDVTabBarController。在RootTabViewController里面依次加载了Project_RootViewController、MyTask_RootViewController、Tweet_RootViewController、Message_RootViewController、Me_RootViewController五个RootViewController,后续的页面跳转都是基于这几个RootViewController引过去的。

项目里面还有些需要注意的点

  • Coding_NetAPIManager:基本上app的所有请求接口都放在了这里。网络请求使用的是AFNetworking库,与服务器之间的数据交互格式用的都是json(与Coding使用的api一致)。

  • 关于推送:刚开始是用的友盟推送,后来又改用了腾讯信鸽,因为要兼顾旧版本app的推送,所以服务器是同时保留了两套推送。但是为了确保新版本的app不同时收到双份相同的推送消息,所以当前代码里还存留了友盟的sdk,用于解除推送token与友盟Alias的绑定。

  • 关于ProjectViewController:这个就是进入到某个项目之后的页面,这里包含了项目的动态、任务、讨论、文档、代码、成员各类信息,而且每类信息里面还可能会有新的分类(如‘任务’里面还分有各个成员的任务);这个页面相当的臃肿,我对它们做了拆分,都放在视图类Views目录下面。 首先是把数据列表独立成了对应的XXXListView(如ProjectTaskListView);然后如果需要标签切换的话,会再新建一个XXXsView(如:ProjectTasksView),在这个视图中,上面会放一个切换栏XTSegmentControl显示各个标签,下面放一个iCarousel可以滑动显示各个标签的内容;最后这些视图都会存储在ProjectViewController的projectContentDict变量里面,根据顶部导航栏选择的类别,去显示或隐藏对应的视图。

  • 关于UIMessageInputView:这个是私信聊天的输入框。因为这个输入框好多地方都有用到(冒泡、任务、讨论的评论还有私信),所以这个输入框就写成了一个相对独立的控件,并且直接显示在了keyWindow里面而不是某个视图里。这里的表情键盘用的是AGEmojiKeyboard改写了一下。

  • 关于Emoji:这个,Coding站点的emoji都是用的图片,而且服务器是不接受大部分emoji字符的,所以刚开始的时候app一直不能处理emoji表情;又因为没有emoji图片名和emoji code码的对应关系表,所以拖了很久都没能做好转换。直到在github上面找到了NSStringEmojize这个项目;试了一下,虽然也不能全部解析,但是大部分表情都能正确显示了,不能更感谢。

  • 关于如何正确显示冒泡的内容:api返回的数据里面,冒泡内容都是html格式,需要做一下预处理;其实私信、讨论里面的内容也是html。解析html的类名是HtmlMediaItem,它是先用hpple对html进行了解析,然后把对应的media元素和对应的位置做一个存储,显示的时候便可以根据需要来显示了。

最后说下CocoaPods里面用到的第三方类库

License

Coding is available under the MIT license. See the LICENSE file for more info.

code4app

相关源码推荐:

我来说两句
*滑动验证:
所有评论(112)
phoiu 2016-12-30 15:08:20
支持,感谢,祝code4app越来越好~
回复
hellokenken 2016-12-30 15:10:33
感谢大神分享,必须顶!
回复
AlonMessi 2016-12-30 15:12:43
感谢分享,楼主V5~
回复
BlueManlove 2016-12-30 15:16:10
code4app好的代码demo真的很多,谢谢啦~
回复
kengsir 2016-12-30 15:20:30
虽不明,但觉厉...
回复
littleRed 2016-12-30 15:29:54
code4app好的内容真的很多~赞
回复
testNav 2016-12-30 16:03:10
学习学习!
回复
code4app热心网友 2016-12-30 16:21:29
学习学习!
回复
我强国强 2016-12-30 16:58:21
感谢分享,Code4App有你更精彩:)
回复
提取码:  下载次数:130 状态:已购或VIP 售价:0(原价:0)金钱 下载权限:初级码农 
892 0 130
代码贡献英雄榜
用户名 下载数
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表