IOS框架文档
总结整理下一个快速开发MVVM框架(抛砖引玉),主要用于分离控制器中的代码,降低代码耦合程度,可以根据自己使用习惯调整代码。
一、架构结构
模块采用MVC 方法,如有复杂逻辑可采用MVVM模式处理
二、三方库
(1)、AFNetworking 网络请求库 (2)、FMDB 数据库
(3)、MJExtension 模型转换
(4)、NetHttpLog 网络请求日志 (5)、SDWebImage 图片加载库 (6)、SGAdvertScrollView 滚动广告库 (7)、IQKeyboardManager 键盘管理 (8)、WRNavigationBar 导航管理 (9)、BRPickerView 日期选择器 (10)、UITableView-NXEmptyView 表格无数据库 (11)、TZImagePickerController 图片选择器 (12)、NetHttpLog 网络请求日志 (13)、SDCycleScrollView 轮播图库 (14)、YNPageScrollMenuView Page滚动视图tab 标题 (15)、SSZipArchive ZIP解压缩
(16)、MQTTClient 物联网通信协议
inhibit_all_warnings! 去掉警告(注意是去掉一些,不是所有)
三、编码规范
(一) 文件命名规范
1、视图控制器命名:以VC+模块+子模块 例:VCHome VCHomeCategory 2、UITableViewCell:以Cell+模块 例:CellHome CellHomeCategory 3、UITableView中Section:以Section+模块 例:SectionHome SectionHomeCategory 4、UIView :以View+模块 例:ViewHome ViewHomeCategory
(二) 属性命名规范
1、UILabel 以lb+名称 例:lbName lbDesc 2、UIView 以v+名称 例:vLine vBg 3、UIImageView 以iv+名称 例:ivAvatar ivIcon 4、UITextField 以tf+名称 例:tfText tfName 5、UITextView 以tv+名称 例:tvDesc tvRemark 6、UIButton 以btn+名称 例:btnSubmit btnCancel
(三) 统一名称
1、视图VC中的UITableView 以table名称统一 2、视图VC中的UITableView数据数组 dataSource 3、视图VC中的UICollectionView 以collView名称统一
(四) 统一方法
1、 updateData方法 用于所有view 写测试数据时调用
2、 updateData:(NSDictionary*)data方法 用于所有view 真实数据更新调用
3、 calHeight方法 用于返回view 自定义高度 4、 initMain 方法 用于VC初始化主数据等工作
(五) VC控制器编码规范 1、 Events 2、 Delegate 3、 Getter Setter 例:
VCHome.m
#pragma mark – Events
- }
(void) initMain{
#pragma mark – UIScrollViewDelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView }
#pragma mark - Getter Setter)tableView{ - (UITableView *)table
(六) 布局规范 1、 VC布局
- (void)viewWillLayoutSubviews{
[super viewWillLayoutSubviews]; //必须调用
CGFrame r = self.lbName.frame; r.size.width = 100* RATIO_WIDHT750; r.size.hegith = 20* RATIO_WIDHT750; r.origin.x = 10* RATIO_WIDHT750; r.origin.y = 20* RATIO_WIDHT750; self.lbName.frame = r; }
2、 View Cell等布局 -(void)layoutSubviews {
[super layoutSubviews];//必须调用
}
3、 UILabel计算高度
CGSize s = [_lbName sizeThatFits:CGSizeMake(MAXFLOAT, 15 * RATIO_WIDHT750)];
4、 属性调用
属性初始化时都以_下划化加名称方式 例 _lbName.text = @””; 其他地方调用则用self.lbName.text = @””;
(七) 编码Block
1、__weak(快捷名称)
__weak typeof(self) weakself = self;
2、assign
@property(nonatomic,assign)
4、 strong
@property(nonatomic,strong)
5、 sean-table-create
返回代码table section数量,section下的row数量,height、cell、header、footer、点击等回调方法
6?sean-collview-create
返回代码collview的section数量,section下的row数量,height、cell、点击等回调方法
7?sean-label-create
_lbName = [[UILabel alloc]initWithFrame:CGRectZero]; _lbName.textColor = RGB3(0);
_lbName.font = [UIFont systemFontOfSize:12*RATIO_WIDHT750]; [self.contentView addSubview: _lbName];
8?sean-imageview-create
_ivIcon = [[UIImageView alloc]initWithFrame:CGRectZero]; _ivIcon.image = [UIImage imageNamed:@\_ivIcon.backgroundColor = APP_COLOR; [self.contentView addSubview:_ ivIcon];
9、sean-button-create
_btnLogin = [[UIButton alloc]initWithFrame:CGRectZero]; [_btnLogin setTitle:@\
[_btnLogin setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
_ btnLogin.backgroundColor = RGB(255, 0, 0);
_ btnLogin.titleLabel.font = [UIFont systemFontOfSize:12*RATIO_WIDHT750]; _ btnLogin.tag = 100;
[_btnLogin addTarget:self action:@selector(clickAction:) forControlEvents:UIControlEventTouchUpInside];
10?sean-textfield-create
_tfName = [[UITextField alloc]initWithFrame:CGRectZero]; _tfName.font = [UIFont systemFontOfSize:14*RATIO_WIDHT750]; _tfName.textColor = [UIColor blackColor]; _tfName.placeholder = @\
[self.contentView addSubview: _tfName];
11?sean-cell-delete
返回tableviewcell 中带有侧滑删除
12?sean-cell-init cell初始化及共有方法
13?sean-view-init view初始化及共有方法
14?sean –method-create 返回方法体
15?sean-label-getter-setter - (UILabel*)lbName{ if(!_lbName){
_ lbName = [[UILabel alloc]initWithFrame:CGRectZero]; _ lbName.text = @\
_ lbName.textColor = RGB3(0);
_ lbName.font = [UIFont systemFontOfSize:12*RATIO_WIDHT750]; }
return _ lbName; }
16?sean-imageview-getter-setter 同上格式
17?sean-button-getter-setter 同上
18?sean-textfield-getter-setter
IOS框架文档V1.1



