iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD)

  好长时间没更新博客, 是时候来一波干货分享了;APP引导页话不多说每一个APP都会用到,分量不重但是不可缺少,不论是APP的首次安装还是版本的更新,首先展现给用户眼前的也就只有它了吧,当然这里讲的不是APP引导页的美化而是APP引导页的高度集成, 一行代码搞定APP引导页是不是太夸张?下面我们就来看一下吧!

  (一)先上GitHub连接,给大家节省时间(分享是一种美德,Star是一种鼓励; PS:大家别忘了抽出一秒钟的时间点击GitHub右上角的小星星?Star一下, 鼓励一下集成SDK的人?? ):

    GitHub地址 : https://github.com/dingding3w/DHGuidePageHUD

  (二)效果图展示:

              

  (三)一行代码搞定APP引导页的创建(真的是一行代码,只要填入参数即可):

 1 /**
 2  *  DHGuidePageHUD
 3  *
 4  *  @param frame      位置大小
 5  *  @param imageArray 引导页图片数组
 6  *  @param isHidden   开始体验按钮是否隐藏(YES:隐藏-引导页完成自动进入APP首页; NO:不隐藏-引导页完成点击开始体验按钮进入APP主页)
 7  *
 8  *  @return DHGuidePageHUD对象
 9  */
10 - (instancetype)dh_initWithFrame:(CGRect)frame imageArray:(NSArray *)imageArray buttonIsHidden:(BOOL)isHidden;

  (四)实现方式跟原理:

    APP引导页是由多张图片组成,引导页的图片在美工切图的时候会给你的这个不用担心;并且使多张图片实现轮番滚动,每拖动一次会跳转到下一张引导页图片,那我们必定会想到可以滚动的视图, 这里我用的是UIScrollView

    (1)创建一个继承于UIView的类;

     (2)将设置引导视图的scrollview添加到UIView上;

 1         // 设置引导视图的scrollview
 2         UIScrollView *guidePageView = [[UIScrollView alloc]initWithFrame:frame];
 3         [guidePageView setBackgroundColor:[UIColor lightGrayColor]];
 4         // 根据传入图片数组中的个数来计算UIScrollView的contentSize
 5         [guidePageView setContentSize:CGSizeMake(DDScreenW*imageArray.count, DDScreenH)];
 6         [guidePageView setBounces:NO];
 7         [guidePageView setPagingEnabled:YES];
 8         [guidePageView setShowsHorizontalScrollIndicator:NO];
 9         [guidePageView setDelegate:self];
10         [self addSubview:guidePageView];

    (3)添加引导页右上角的跳过按钮(因为跳过按钮一直停留在屏幕的右上角所以这里也要添加的UIView上并且要显示到UIScrollView的上方,以便加强用户交互)

1         // 设置引导页上的跳过按钮
2         UIButton *skipButton = [[UIButton alloc]initWithFrame:CGRectMake(DDScreenW*0.8, DDScreenW*0.1, 50, 25)];
3         [skipButton setTitle:@"跳过" forState:UIControlStateNormal];
4         [skipButton setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal];
5         [skipButton setBackgroundColor:[UIColor grayColor]];
6         [skipButton.layer setCornerRadius:5.0];
7         // 添加点击事件(该事件保持与开始体验按钮,自动跳转APP同步;目的是减少代码的书写量与其他方式保持同步样式)
8         [skipButton addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
9         [self addSubview:skipButton];

    (4)添加引导页上的多张图片(如果您设置的isHidden参数为NO的话,会在最后一张引导页图片上添加"开始体验按钮"; 如果您设置isHidden的参数为YES的话,当滑动到最后一张APP引导页的时候会自动进入APP相关首页)

 1      // 添加在引导视图上的多张引导图片
 2         for (int i=0; i<imageArray.count; i++) {
 3             UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(DDScreenW*i, 0, DDScreenW, DDScreenH)];
 4             imageView.image = imageArray[i];
 5             [guidePageView addSubview:imageView];
 6
 7             // 设置在最后一张图片上显示进入体验按钮
 8             if (i == imageArray.count-1 && isHidden == NO) {
 9                 [imageView setUserInteractionEnabled:YES];
10                 UIButton *startButton = [[UIButton alloc]initWithFrame:CGRectMake(DDScreenW*0.3, DDScreenH*0.8, DDScreenW*0.4, DDScreenH*0.08)];
11                 [startButton setTitle:@"开始体验" forState:UIControlStateNormal];
12                 [startButton setTitleColor:[UIColor colorWithRed:164/255.0 green:201/255.0 blue:67/255.0 alpha:1.0] forState:UIControlStateNormal];
13                 [startButton.titleLabel setFont:[UIFont systemFontOfSize:21]];
14                 [startButton setBackgroundImage:[UIImage imageNamed:@"GuideImage.bundle/guideImage_button_backgound"] forState:UIControlStateNormal];
15                 [startButton addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
16                 [imageView addSubview:startButton];
17             }
18         }

    (5)点击事件的实现,这里使用UIView动画以及延时的方式来使用APP引导页进入APP相关首页时的淡入淡出效果:

1 - (void)buttonClick:(UIButton *)button {
2     [UIView animateWithDuration:DDHidden_TIME animations:^{
3         self.alpha = 0;
4         dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(DDHidden_TIME * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
5             [self performSelector:@selector(removeGuidePageHUD) withObject:nil afterDelay:1];
6         });
7     }];
8 }

    (6)最后在APP引导页跳转APP首页的时候记得remove掉当前APP引导页,防止产生不必要的麻烦(最好remove掉??):

1 - (void)removeGuidePageHUD {
2     [self removeFromSuperview];
3 }

  (五)可能会用到的代码:

    这里我使用NSUserDefaults判断程序是否第一次启动(其他方法也可以,这里把代码给大家粘贴出来)

1 if (![[NSUserDefaults standardUserDefaults] boolForKey:BOOLFORKEY]) {
2         [[NSUserDefaults standardUserDefaults] setBool:YES forKey:BOOLFORKEY];
3         // 在这里写初始化图片数组和DHGuidePageHUD库引导页的代码
4 }

  (六)以上就是我对DHGuidePageHUD这个APP引导页第三方SDK的理解与讲解,全部代码已经上传至GitHub链接(多多Star星星)??,希望大家相互补充相互学习;

时间: 2024-10-14 17:24:16

iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD)的相关文章

iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ②)

距上一篇博客"APP引导页的高度集成 - DHGuidePageHUD - ①"的发布有一段时间了, 后来又在SDK中补充了一些新的内容进去但是一直没来得及跟大家分享, 今天来跟大家分享一下, 还是一行代码搞定APP引导页, 废话不多说直接进入主题! 如果还没来得及看上一篇博客的话, 请大家点击这里进入: iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ①) ????; (一)老规矩先上GitHub连接,给大家节省时间(分享是一种美德,S

iOS开发 UIScrollView制作APP引导页

http://jingyan.baidu.com/article/4dc40848a341dfc8d846f152.html 听语音 | 浏览:4606 | 更新:2015-02-10 12:14 | 标签:制作 1 2 3 4 5 6 7 分步阅读 一键约师傅 百度师傅最快的到家服务,最优质的电脑清灰! 应用程序APP一般都有引导页,引导页可以作为操作指南指导用户熟悉使用:也可以展现给用户,让用户了解APP的功能作用.引导页制作简单,一般只需要一组图片,再把图片组展现出来就可以了.展示图片组常

Android APP 引导页实现-第一次应用进入时加载

APP引导页是每个优质APP必备的元素,下面我们研究一下如何只在第一次进入应用时进行加载引导页的方法. 1.判断是否第一次进入应用的方法: package com.yayun.guide;    import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.

Android实战简易教程-第六十四枪(Android APP 引导页实现-第一次应用进入时加载)

APP引导页是每个优质APP必备的元素,下面我们研究一下如何只在第一次进入应用时进行加载引导页的方法. 1.判断是否第一次进入应用的方法: package com.yayun.guide; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bun

iOS App引导页功能实现

一.写作原因 以前都没有想着来写点东西,今天遇到件事情让我决定每次还是要做记录.因为以前自己可以轻松的完成pod spec的配置,但是今天在做的时候还是忘了遇到了很多坑.pod spec配置遇到的坑不在这里写,后面会单独写一点,但是内容不会太多.一是方便别人,二是方便自己. 第一次来发帖,写的不对的地方,请大神指出.我一定好好的努力修改并向大家学习,但是还是不太喜欢一惯的喷子.就像大家说的经典一样`close your mouth show me your code`,英文不好如果错了,大家见谅

[iOS] App引导页的简单实现 (Swift 2)

转载请注明出处:http://www.jianshu.com/p/024dd2d6e6e6# 已更新至 Xcode7.2.Swift2.1 在第一次打开App或者App更新后通常用引导页来展示产品特性 我们用NSUserDefaults类来判断程序是不是第一次启动或是否更新,在 AppDelegate.swift中加入以下代码: func application(application: UIApplication, didFinishLaunchingWithOptions launchOpt

[iOS]简单的APP引导页的实现 (Swift)

在第一次打开APP或者APP更新后通常用引导页来展示产品特性 我们用NSUserDefaults类来判断程序是不是第一次启动或是否更新,在AppDelegate.swift中加入以下代码: func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customiza

用ViewPager为你的APP引导页添加视差滚动(Parallax Scrolling)效果

什么是视差滚动 视差滚动效果是怎样的 如何实现视差滚动效果 1 通过使用ViewPager实现页面的左右滑动 2 ViewPager有办法实现ParallaxScrolling吗 3 ViewPagerPageTransformer如何使用 由视差滚动效果引起的思考 以上仅是个人在开发中收集的经验欢迎大家拍砖 1. 什么是视差滚动? Parallax Scrolling(视差滚动),是一种常见的动画效果.视差一词来源于天文学,但在日常生活中也有它的身影.在疾驰的动车上看风景时,会发现越是离得近的

微信公众号分享的引导页(附素材)

参考 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 不过要提醒的是,这种自定义的分享,微信要即将废弃了 在微信公众号内应该是没办法唤起分享弹出框.(没深入研究过),暂时做了引导页去引导用户点击右上方按钮去分享 分享会用到:  微信JS-SDK  (需要验签) 第一步,程序后台计算验签数据 $durl = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_UR