本文介绍了在 iOS 客户端渲染卡片的整体实现流程。
渲染卡片的流程分为四部分。第一步,组装卡片配置信息;第二步,根据配置信息请求卡片,获取卡片实例;第三步,通过卡片实例,使用卡片 View
去渲染;第四步,在整个业务完成后,在 destroy
声明周期中,释放卡片。具体流程如下:
组装卡片配置信息。
创建配置信息,并设置各种参数。
- (void)createCubeConfig { // 设置卡片参数 CubeCardConfig *cardConfig = [[CubeCardConfig alloc] init]; // 卡片版本 [cardConfig setVersion:@"1.0.0.0"]; // 后台创建的卡片 ID [cardConfig setTemplteId:@"987654321"]; // 预设宽度 [cardConfig setWidth:MP_Screen_Width - 40]; // 预设高度 [cardConfig setHeight:CGFLOAT_MAX]; }
请求卡片。
根据组装好的卡片配置信息请求卡片,卡片引擎会去服务端获取卡片模板信息。可以使用
createCard
方法一次请求一个卡片,也可以使用createCards
方法一次请求多个卡片。- (void)requestCard { // 加载单个卡片 [[[CubeService sharedInstance] getEngine] createCard:cardConfig callback:self]; NSMutableArray *cardArray = [NSMutableArray array]; [cardArray addObject:cardConfig]; [cardArray addObject:cardConfig]; // 加载多个卡片 [[[CubeService sharedInstance] getEngine] createCards:cardArray callback:self]; }
渲染卡片。
拿到卡片信息之后,生成卡片 View,然后在主线程中进行渲染。在此环节中需要进行异常判断,防止未顺利获取到卡片信息的情况发生。
#pragma mark---CrystalCardCallback - (void)onLoaded:(CubeCard *)card cardType:(CCardType)cardType config:(CubeCardConfig *)config erroCode:(CubeCardResultCode)erroCode { if (!card) { NSString *errMsg = [NSString stringWithFormat:@"创建失败:templteId=%@,style=%d, error=%d", [config templteId], cardType, erroCode]; NSLog(@"错误信息:%@", errMsg); return; } NSLog(@"创建成功 succ %@ style %d error %d", [config templteId], cardType, erroCode); dispatch_async(dispatch_get_main_queue(), ^{ //主线程刷新UI操作 CubeView *view = [[[CubeService sharedInstance] getEngine] createView]; CGSize size = [card getSize]; if (![view isEqual:[NSNull null]]) { [view setFrame:CGRectMake(0, 0, MP_Screen_Width - 40, size.height)]; [card renderView:view]; } [self.view addSubView:view]; }); }
释放卡片。
卡片使用完成之后,需要释放卡片的内存资源,通常是在页面的
dealloc
生命周期里调用或者主动销毁。- (void)destoryCubeService { //销毁卡片引擎 if (![[[CubeService sharedInstance] getEngine] isEqual:[NSNull null]]) { [[CubeService sharedInstance] destroyEngine]; } //删除卡片视图 [self.view removeAllSubviews]; }
文档内容是否对您有帮助?