Coding_iOS客户端项目介绍
来源:互联网 发布:vim node inspector 编辑:程序博客网 时间:2024/06/05 16:40
编译环境:Xcode-Version 6.1 (6A1052d)
下面介绍一下文件的大概目录先:
.├── 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里面用到的第三方类库
- SDWebImage:图片加载
- TTTAttributedLabel:富文本的label,可点击链接
- RegexKitLite:正则表达式
- hpple:html解析
- MBProgressHUD:hud提示框
- ODRefreshControl:下拉刷新
- TPKeyboardAvoiding:有文字输入时,能根据键盘是否弹出来调整自身显示内容的位置
- JDStatusBarNotification:状态栏提示框
- BlocksKit:block工具包。将很多需要用delegate实现的方法整合成了block的形式
- ReactiveCocoa:基于响应式编程思想的oc实践(是个好东西呢)
- Coding_iOS客户端项目介绍
- Coding_iOS客户端项目介绍
- Coding_iOS下载设置步骤
- 开源的第三方MSN客户端项目介绍
- 上门洗车APP --- Android客户端开发 之 项目结构介绍
- 上门洗车APP --- Android客户端开发 之 项目结构介绍
- no such file or directory: 'Coding_iOS/Coding_iOS-Prefix.pch'问题解决方案
- 【个人项目】基于naga开发的TCP客户端/服务器程序介绍
- redis客户端predis介绍
- redis客户端PhpRedis介绍
- Android SSH 客户端介绍
- GitHub的客户端介绍
- Kafka 处理器客户端介绍
- Redis介绍、安装、客户端
- 项目介绍
- 项目介绍
- 客户端编程--项目
- Android项目--团购类客户端
- 最大三角形
- 开启Linux学习之旅
- 用户注册验证
- JavaScript BOM 相关知识
- 计算2015!(C++)
- Coding_iOS客户端项目介绍
- 华为机试—删除连续出现大于等于3的数字
- rman备份
- js面向对象
- LeetCode---Remove Nth Node From End of List
- Objective-C中copy 、retain以及ARC中新加入的strong、weak关键字的含义
- JavaScrpt 全局属性与函数
- Cocos2d-html5 搭建开发环境,运行 Hello World,JetBrains IDE Support
- 视频编辑软件‘编辑星V3’中英版本上线了