iOS - GitHub干貨分享(APP引導頁的高度集成 - DHGuidePageHUD - ②)


  距上一篇博客"APP引導頁的高度集成 - DHGuidePageHUD - ①"的發布有一段時間了, 后來又在SDK中補充了一些新的內容進去但是一直沒來得及跟大家分享, 今天來跟大家分享一下, 還是一行代碼搞定APP引導頁, 廢話不多說直接進入主題!

  如果還沒來得及看上一篇博客的話, 請大家點擊這里進入: iOS - GitHub干貨分享(APP引導頁的高度集成 - DHGuidePageHUD - ①) ;

  (一)老規矩先上GitHub連接,給大家節省時間  GitHub地址: https://github.com/dingding3w/DHGuidePageHUD

  (二)本次更新效果圖展示:

              

  (三)本次SDK更新說明:

    由於更新時間拖得有點長, 本次SDK的更新直接從V1.0.0更新到V2.0.0版本, 並且本次只要更新的內容是由V1.0.0版本的"靜態APP引導頁"更新到V2.0.0版本的"靜態APP引導頁和動態APP引導頁"兩種狀態(保持原有的功能不變添加新的功能), 並且SDK的使用方式不變, SDK內部會自動識別開發者傳入的圖片是靜態圖片還是動態圖片, 方便了開發者的使用, 加快了開發效率, 一行代碼搞定APP引導頁的創建, 傳入參數即可:

/**
 *  DHGuidePageHUD
 *
 *  @param frame      位置大小
 *  @param imageArray 引導頁圖片數組(NSString)
 *  @param isHidden   開始體驗按鈕是否隱藏(YES:隱藏-引導頁完成自動進入APP首頁; NO:不隱藏-引導頁完成點擊開始體驗按鈕進入APP主頁)
 *
 *  @return DHGuidePageHUD對象
 */
- (instancetype)dh_initWithFrame:(CGRect)frame imageNameArray:(NSArray<NSString *> *)imageNameArray buttonIsHidden:(BOOL)isHidden;

  (四)本次SDK更新的內容:

    (1)在原有SDK的基礎上添加"DHGifImageOperation" GIF動圖圖片處理類(該類可以處理本地GIF圖片和網絡GIF圖片, 同時添加通過圖片Data來判斷該圖片的格式, 判斷更加嚴謹):

    DHGifImageOperation.h

/**
 *  通過圖片Data數據第一個字節來獲取圖片擴展名
 */
+ (NSString *)dh_contentTypeForImageData:(NSData *)data;

/**
 *  自定義播放Gif圖片(Path)
 *
 *  @param frame        位置和大小
 *  @param gifImagePath Gif圖片路徑
 *
 *  @return Gif圖片對象
 */
- (id)initWithFrame:(CGRect)frame gifImagePath:(NSString *)gifImagePath;

/**
 *  自定義播放Gif圖片(Data)(本地+網絡)
 *
 *  @param frame        位置和大小
 *  @param gifImageData Gif圖片Data
 *
 *  @return Gif圖片對象
 */
- (id)initWithFrame:(CGRect)frame gifImageData:(NSData *)gifImageData;

    DHGifImageOperation.m

#pragma mark - 通過圖片Data數據第一個字節來獲取圖片擴展名
+ (NSString *)dh_contentTypeForImageData:(NSData *)data {
    uint8_t c;
    [data getBytes:&c length:1];
    switch (c) {
        case 0xFF:
            return @"jpeg";
        case 0x89:
            return @"png";
        case 0x47:
            return @"gif";
        case 0x49:
        case 0x4D:
            return @"tiff";
        case 0x52:
            if ([data length] < 12) {
                return nil;
            }
            NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding];
            if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) {
                return @"webp";
            }
            return nil;
    }
    return nil;
}

#pragma mark - 自定義播放Gif圖片(Path)
- (id)initWithFrame:(CGRect)frame gifImagePath:(NSString *)gifImagePath {
    self = [super initWithFrame:frame];
    if (self) {
        gifProperties = [NSDictionary dictionaryWithObject:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:0] forKey:(NSString *)kCGImagePropertyGIFLoopCount] forKey:(NSString *)kCGImagePropertyGIFDictionary];
        gif = CGImageSourceCreateWithURL((CFURLRef)[NSURL fileURLWithPath:gifImagePath], (CFDictionaryRef)gifProperties);
        count =CGImageSourceGetCount(gif);
        timer = [NSTimer scheduledTimerWithTimeInterval:0.06 target:self selector:@selector(play) userInfo:nil repeats:YES];/**< 0.12->0.06 */
        [timer fire];
    }
    return self;
}

#pragma mark - 自定義播放Gif圖片(Data)(本地+網絡)
- (id)initWithFrame:(CGRect)frame gifImageData:(NSData *)gifImageData {
    self = [super initWithFrame:frame];
    if (self) {
        gifProperties = [NSDictionary dictionaryWithObject:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:0] forKey:(NSString *)kCGImagePropertyGIFLoopCount] forKey:(NSString *)kCGImagePropertyGIFDictionary];
        gif = CGImageSourceCreateWithData((CFDataRef)gifImageData, (CFDictionaryRef)gifProperties);
        count =CGImageSourceGetCount(gif);
        timer = [NSTimer scheduledTimerWithTimeInterval:0.06 target:self selector:@selector(play) userInfo:nil repeats:YES];/**< 0.12->0.06 */
        [timer fire];
    }
    return self;
}

    (2)最后還是在APP引導頁跳轉APP首頁的時候記得remove掉當前APP引導頁,防止產生不必要的麻煩(最好remove掉😄):

- (void)removeFromSuperview {
    [timer invalidate];
    timer = nil;
    [super removeFromSuperview];
}

  (五)工作之余還寫了其他的兩個SDK, 來不及寫博客跟大家分享, 先把GitHub地址分享跟大家, 如果覺得對您有幫助, 請抽出一秒鍾的時間點擊GitHub右上角的小星星✨Star一下, Thank you~😄😄;

    GitHub地址: https://github.com/dingding3w/DHAlertViewHUD (快速繼承APP提示框);

    GitHub地址: https://github.com/dingding3w/DHLaunchPageHUD (一行代碼集成APP啟動頁, 包含有廣告和無廣告兩種樣式);

  (六)以上就是我對DHGuidePageHUD這個APP引導頁第三方SDK的理解與講解,全部代碼已經上傳至GitHub鏈接,希望大家相互補充相互學習;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM