本文介紹了在 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]; }
文檔內容是否對您有幫助?