当开始做一个项目的时候,基本框架可以帮你省略很多工作,只要拿过来使用即可,当然你先要知道他的使用方法。
这一篇文章主要是讲解基本框架的文件夹结构,以及所代表的含义。哪些文件对应哪些功能。
- Common:一些公用定义,在整个项目都会用到的东西。如:三方库的头文件引入、宏函数定义
- Category:分类
- Manager:管理类。如:网络管理(接口)、项目管理
- Module:功能模块。主要根据项目的业务层面划分。如:登录注册就是一个模块
- Lib:三方库。框架中主要是使用pod去管理三方库,如果有些库只有加入源码的方式,那就放在该文件夹下面
- Help:帮助类。主要是在第三方库的基础上,再做了一层封装,便于使用,以及以后更换库。
- Tool:工具类。将一些常用到的功能编写成一个工具类。如:项目中经常用到上拉、下拉刷新的功能,就做成了一个工具类
- Base:基类。
- JMBaseProject:新建项目时自动生成的。里面有图片资源文件夹、AppDelegate、LaunchScreen等
Common
- JMCommonHeader:框架的头文件
- JMCommonMacro:全局宏、宏函数定义。(输出函数JMLog、JMWeak、性别)
- JMCommonMethod:全局会用到的方法,定义的都是类方法的形式。无需实例化,直接调用。
- JMNotificationMacro:存放Notificaiton宏
- Singleton:快速为类添加单例
Category
- UIWindow+CurrentViewController:这是UIWindow的分类,快速获取window当前显示的viewController
- RequestJson文件夹下的分类,是针对接口数据解析增加的。主要就是避免空数据导致的问题。
Manager
HttpManager文件夹下为网络接口管理文件
- JMRequestManager:里面有post、get、upload常用的接口请求方法。项目里面接口请求时,也是调用这个文件的方法。
- JMBaseResponse:外部不调用这个文件的任何方法,他主要是将接口返回的数据做了一层封装,让外界的使用更方便
- JMHttpUrl:这个文件里放的就是接口的请求地址
ProjectManager文件夹下为这个项目管理文件
- JMProjectManager这是一个单例,存放了app 的一些数据,如登录用户数据。显示登录页、显示主页等这些很多地方都要做的一些操作
Module
这个文件夹下放的是业务模块,进入开发,在这个文件夹下的新增就是最多的。
目前这个下面只放了登录注册模块,那是因为app的登录注册模块大多是一样,所以作为基础模块放在了基础框架里,同时也可以作为一个参考,增加其他模块,使用MVC模式,storyboard管理界面
Lib
RegExp:正则验证
PopoverView:类似于QQ右侧弹出框
Help
ThirdPay:三方支付,包含微信、支付宝支付
Cache:清理缓存,主要是设置里面显示清理缓存
AlertController:主要是对系统UIAlertController的封装,让其更好用。
Progress:toast显示提示信息
Permission:系统权限判断,如相册、相机、定位、日历等
File:FileManager功能封装,里面方法很多,对于文件的操作很方便
UMeng:友盟封装,三方登录、分享都是使用友盟
Tool
JMUploadVideoTool:提供视频压缩。如果需要上传视频,则需要对视频进行一个压缩才上传。
JMAppVersionTool:版本检测工具类
JMPickPhotoTool:选择图片工具类
JMPhoneCodeTool:发送验证码工具类
JMRefreshTool:上拉、下拉翻页数据请求工具类。使用的是MJRefresh的三方库。
Base
BaseViews
- JMPopoverCenterView、JMPopoverBottomView自定义弹框基类。前面是中间弹框,后面是底部弹框
- JMWebViewCell:tableView的cell,主要用于加载HTML
- JMNavigationBar:框架使用的不是系统navigationBar 而是自定义的bar,其继承于view,定义了DataSource、delegate,让其使用更方便。
BaseModels
没有
BaseControllers
- JMNavUIBaseViewController:导航栏。可以在这个文件里设置基本的导航栏信息,如:导航栏的高度、颜色、背景色、标题颜色,文字大小等
- JMTextViewController:主要是键盘处理,还有输入框跟按钮关系设置(输入框没有内容,按钮不可用)
- JMRequestBaseViewController:网络请求,封装了请求loading的显示和隐藏
- JMBaseViewController:可以对VC进行基本的处理,如:背景颜色设置、初始化方法增加。
由上到下是继承的关系,到最后的JMBaseViewController就包含了上面几个的所有功能。我们新建VC继承JMBaseViewController,就有了导航栏、键盘、网络等各方面的功能。
- JMTabBarController:是UITabBarController的子类,主要是把所有tab的设置可以放到这个文件中。
- JMNavigationController:是UINavigationController的子类,主要是使用系统的navigationBar,在此处进行隐藏,然后好使用自定义的navigationBar。
结语:讲解的比较佛系,大家不懂的地方直接问我。文章上可以优化的地方,大家也多提建议。