组件开发
1.新的电脑pod install之前要做创建私有repo 可以搜索到私有库
pod repo add hippiusBase https://code.choerodon.com.cn/mobile-center-hippius/hippius-ios-repo.git
##是否可以搜索到HippiusBaseComponent
pod search HippiusBaseComponent
基础模板地址
执行下面代码
git clone -b template https://code.choerodon.com.cn/mobile-center-hippius/hippiusios
2.本项目有几个私有组件,其中连接地址里有组件的详细说明,以及他所引用的组件
- 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.0.15.1'-
'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,继承HippiusBaseTabRootViewController
资源文件以及多语言 每个模板以及扩展的模块都要有一个bundle文件,里面存放本模板(模块)需要的多语言,以及图片资源。例如EipApplication.bundle模块。如果要开发一个别的模块,比如企业门户我的,就需要创建一个比如名字为EipMy.bundle的文件(可以复制EipApplication.bundle,然后修改名字)。同时添加宏定义,读取多语言。例如EipMyLocalized
#define EipMyLocalized(key) [[NSBundle bundleWithPath:[[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"EipMy" ofType:@"bundle"]] pathForResource:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]] ofType:@"lproj"]] localizedStringForKey:(key) value:nil table:@"EipMyLanguage"]
EipMyLanguage 为多语言名字,可以打开EipMy.bundle看到
- 读取资源图片资源 如果读取后台配置的,在Hand.bundle中的图片资源 需要事先知道哪个需要在动态打包的时候替换
[NSURL getImageFromBundleWithName:@"bg"]//读取Hand.bundle下的图片,可以在自动打包中替换
[NSURL getImageFromBundleWithName:@"phonebind" bundleName:@"EipMy"]//读取企业门户我的模块下读取本模块的资源
如果读取模板中图片资源比如读取HippiusTemplet.bundle中的123.png,如下
[NSURL getImageFromBundleWithName:@"123" bundleName:@"HippiusTemplet"];