距上一篇博客"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鏈接,希望大家相互補充相互學習;