日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

渲染卡片

本文介紹了在 iOS 客戶端渲染卡片的整體實現流程。

渲染卡片的流程分為四部分。第一步,組裝卡片配置信息;第二步,根據配置信息請求卡片,獲取卡片實例;第三步,通過卡片實例,使用卡片 View 去渲染;第四步,在整個業務完成后,在 destroy 聲明周期中,釋放卡片。具體流程如下:

  1. 組裝卡片配置信息。

    創建配置信息,并設置各種參數。

    - (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];
    }

  2. 請求卡片。

    根據組裝好的卡片配置信息請求卡片,卡片引擎會去服務端獲取卡片模板信息。可以使用 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];
    }

  3. 渲染卡片。

    拿到卡片信息之后,生成卡片 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];
        });
    }
  4. 釋放卡片。

    卡片使用完成之后,需要釋放卡片的內存資源,通常是在頁面的 dealloc 生命周期里調用或者主動銷毀。

    - (void)destoryCubeService {
        //銷毀卡片引擎
        if (![[[CubeService sharedInstance] getEngine] isEqual:[NSNull null]]) {
            [[CubeService sharedInstance] destroyEngine];
        }
        
        //刪除卡片視圖
        [self.view removeAllSubviews];
    }