组件开发
1.配置猪齿鱼ssh
1.1生成ssh key
#切换到.ssh目录
cd ~/.ssh
#使用自己的企业邮箱产生SSH KEY
ssh-keygen -t rsa -C "XXX@hand-china.com"
#起名:id_rsa_choerodon
Enter file in which to save the key (/Users/liyanjun/.ssh/id_rsa):id_rsa_choerodon
##剩下连续回车,密码为空
#将ssh key添加到SSH agent中
ssh-add ~/.ssh/id_rsa_choerodon
1.2 上传key到猪翅鱼
- 进入 配置页面
- 上传公钥 如图
- 点击添加秘钥
- 验证是否成功
ssh -T git@code.choerodon.com.cn
如图标识验证成功
2.新的电脑pod install之前要做创建私有repo 可以搜索到私有库
pod repo add hippiusBase git@code.choerodon.com.cn:mobile-center-hippius/hippius-ios-repo.git
##是否可以搜索到HippiusBaseComponent
pod search HippiusBaseComponent
基础模板地址
执行下面代码
git clone -b template git@code.choerodon.com.cn:mobile-center-hippius/hippiusios.git
3.本项目有几个私有组件,其中连接地址里有组件的详细说明,以及他所引用的组件
- HippiusSwitch:一个自定义的Switch组件地址
- HippiusShareView:项目中的友盟分享组件地址
- HippiusCommonBusiness:项目中的基础业务逻辑组件,包括子应用、个人信息部分地址
- HippiusWebView:项目中的webView组件地址
- HippiusLYJFMDB:项目中用到的本地数据组件地址
- HippiusAFService:项目的网络访问组件地址
- HippiusTTpopview:一个可以个性化弹窗view的组件地址
- HippiusPYSearch:PYSearch的个性化修改地址
- HippiusZoomImageView:项目中的头像点击的展示组件,只支持一张图片地址
- HippiusYJIdentificationCodeView:一个可以分解验证码的view地址
- HippiusCustomSearchBar:项目个性化的searchBar地址
- HippiusVerticalLabel:项目的垂直方向的布局组件地址
- HippiusKeyBoard:hippius项目的键盘输入组件地址
- HippiusindexView:一个tablview的索引组件地址
- HippiusMJCustom:hippius项目个性化的mj部分地址
- HippiusAddressBook:保存到通讯录组件地址
- HippiusBaseComponent:hippius的基础组件地址
- HippiusMediator:项目的组件路由基础类地址
- HippiusFDFullscreenPopGesture:FDFullscreenPopGesture的修改过版本地址
- HippiusDRPLoadingSpinner:项目的组件路由基础类地址
模板开发根据需求引入对应组件,一般引入HippiusCommonBusiness和HippiusBaseComponent,如果没用到基本业务如子应用,我的个人信息等,引入HippiusBaseComponent和其他需要的组件
项目用到的第三方库以及对应的版本如下
'Masonry', '~> 1.1.0' -
'SDWebImage','4.4.2' --
'MJExtension','3.1.0'-
'MJRefresh','3.1.15.7'-
'DateTools','2.0.0'
'Toast','4.0.0'-
'MBProgressHUD', ' 1.0.0'-
'AFNetworking', ' 3.1.0'---
'DZNEmptyDataSet','1.8.1' ---
'FMDB','2.7.5'---
'GCDWebServer','3.4.2'
'SDCycleScrollView', '~> 1.75'
'AYPageControl','0.0.2'
'SAMKeychain','1.5.3'-
'Reachability', '3.2'--
'TZImagePickerController','3.1.5'
'TOCropViewController', '2.4.0'
'SSZipArchive','2.1.4'
’DACircularProgress','2.3.1'
'UMCCommon','1.5.3'
'UMCShare/UI','6.9.5'
'UMCShare/Social/ReducedWeChat','6.9.5' --
'UMCShare/Social/ReducedQQ','6.9.5' --
'UMCSecurityPlugins','1.0.6'
'AYPageControl','0.0.2'
‘TZImagePickerController','3.1.5'
'TOCropViewController', '2.4.0'
如果模板也需要引入对应的第三方,请引入对应的版本
每个模块里面都要有一个继承自HippiusBaseMeator入口的路由类,且名称为(模板+模块+Mediator)EipApplicationMediator(企业门户应用),并重写里面的方法;EipApplicationSetting:获取plist的转换类(plist包含了打包平台配置的打包);EipApplicationConstant:定义该模板下的一些常量;
主工程和模板模块之间的调用,都要通过路由调用,如下
id templetsMediator = [@"EipApplicationMediator" VKCallClassSelectorName:@"selfMeator" error:&error];
UIViewController* ctl = [templetsMediator VKCallSelectorName:@"ctl" error:&error];
关于组件化的路由调用方法
//实例方法:
//方法1
id test = [[NSClassFromString(@"TestMj") alloc] init];
[test setValue:@"1" forKey:@"name"];
[test setValue:@"2" forKey:@"sex"];
NSError* error;
[test VKCallSelectorName:@"testNamehaha:age:" error:&error,@"哈哈",123];
//方法2
[@"TestMj" VKCallClassAllocInitSelectorName:@"testNamehaha:age:" error:&error,@"哈哈",123];
//类方法:
[NSClassFromString(@"TestMj") VKCallSelectorName:@"testNamehaha:age:"" error:&error,@"哈哈",123];
[@"TestMj" VKCallClassSelectorName:@"testNamehaha:age:" error:&error,@"哈哈",123];
每个模板的入口ctl,如果是tab下继承HippiusBaseTabRootViewController,否则不用继承
资源文件以及多语言 每个模板以及扩展的模块都要有一个bundle文件,里面存放本模板(模块)需要的多语言,以及图片资源。例如EipApplication.bundle模块。如果要开发一个别的模块,比如企业门户我的,就需要创建一个比如名字为EipMy.bundle的文件(可以复制EipApplication.bundle,然后修改名字)。同时添加宏定义,读取多语言。例如EipMyLocalized
#import "BaseConst.h"
#define HippiusDemoLocalized(key) LocalizedInbundelWithTable(key,@"HippiusDemo",@"HippiusDemoLanguage")
HippiusDemoLanguage 为多语言名字,可以打开HippiusDemo.bundle看到
- 读取资源图片资源 如果读取后台配置的,在Hand.bundle中的图片资源 需要事先知道哪个需要在动态打包的时候替换
[NSURL getImageFromBundleWithName:@"bg"]//读取Hand.bundle下的图片,可以在自动打包中替换
[NSURL getImageFromBundleWithName:@"clear" bundleName:@"HippiusDemo"]//读取模板代码读取本模块的资源