一、首先第一步,写好用户轮播页的viewController,比如叫做LVUserGuideVC,关键代码是配置和scrollView和pageControl。

(1)scrollView的设置

 self.scrollView.delegate = self;
    self.scrollView.backgroundColor = [UIColor clearColor];
    self.scrollView.pagingEnabled = YES;
    self.scrollView.scrollEnabled = YES;
    self.scrollView.contentSize = CGSizeMake(SCREEN_WIDTH*self.pageNumber,);
    self.scrollView.showsHorizontalScrollIndicator = NO;
    self.scrollView.showsVerticalScrollIndicator = NO;
    ; ind < self.guidanceImageArray.count; ind++) {
        // 插入要轮播的image
    }
    [self.view addSubview:self.scrollView];

(2)pageControl的设置

 self.pageControl.hidesForSinglePage = YES;
    self.pageControl.pageIndicatorTintColor = [UIColor colorWithHexString:@"e1e1e1"];
    self.pageControl.currentPageIndicatorTintColor = [UIColor colorWithHexString:@"ff6633"];
    self.pageControl.indicatorMargin = ;
    self.pageControl.indicatorDiameter = ;
    self.pageControl.numberOfPages = self.pageNumber;
    self.pageControl.currentPage = ;
    [self.pageControl addTarget:self action:@selector(changePage) forControlEvents:UIControlEventValueChanged];

(3)pageControl的动作action ,changePage这样写:

-(void)changePage{

    CGRect frame = self.scrollView.frame;
    frame.origin.x = frame.size.width * self.pageControl.currentPage;
    frame.origin.y = ;
    [self.scrollView scrollRectToVisible:frame animated:YES];
    self.pageControlIsChangingPage = YES;
}

(4)scrollView的2个主要代理方法:

#pragma mark UIScrollViewDelegate

//滚动时调用的方法,其中判断画面滚动时机
-(void)scrollViewDidScroll:(UIScrollView *)sender{
    //画面滚动超过50%时进行切换
    CGFloat pageWidth = sender.frame.size.width;
    NSInteger  page = floor((sender.contentOffset.x - pageWidth/)/pageWidth)+;
    self.pageControl.currentPage = page;
}

//滚动完成时调用的方法
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
    self.pageControlIsChangingPage = NO;
}

(5)需要全屏显示,隐藏navigationBar,设置statusBar:

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
    [self.navigationController setNavigationBarHidden:YES animated:YES];
}

-(void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:YES];
    [self setNeedsStatusBarAppearanceUpdate];
}

二、LVUserGuideVC加载时机,尝试了以下两个方法

(1)在Home页直接加载到window上,在合适的时机,从window上remove掉LVUserGuideVC到达home页:

 self.guidanceVC = [[LVUserGuideVC alloc] init];
  UIWindow *window = [[UIApplication sharedApplication] keyWindow];
  self.guidanceVC.view.frame = window.bounds;
 [window addSubview:self.guidanceVC.view];

注意:此处的guidanceVC,一定不能是局部变量,否则,把guidanceVC.view加载到window后,guidanceVC这个变量就释放掉了,里面scrollView的代理等所有方法都不能执行。

要取消掉userGuide页面,只需在LVUserGuideVC里remove掉即可

[self.view removeFromSuperView];

(2)作为navigatore的根视图,可以在login页、home页跳转

 LVUserGuideVC *guidanceVC = [[LVUserGuideVC alloc] init];
 self.navigationController = [[NVNavigationController alloc] initWithRootViewController:guidanceVC];
self.window.rootViewController = self.navigationController;

需要去掉userGuide页面时,把navigatore的根视图变换即可。

用户引导页--- ScrollView的使用的更多相关文章

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

    好长时间没更新博客, 是时候来一波干货分享了;APP引导页话不多说每一个APP都会用到,分量不重但是不可缺少,不论是APP的首次安装还是版本的更新,首先展现给用户眼前的也就只有它了吧,当然这里讲的不是 ...

  2. iOS开发 首次启动显示用户引导,第二次启动直接进入App,UIScrollView,UIPageControl,NSUserDefaults

    首先创建一个引导图的控制器类 UserGuideViewController.h和UserGuideViewController.m #import <UIKit/UIKit.h> #im ...

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

    每一个APP都会用到APP引导页,分量不重但是不可缺少,不论是APP的首次安装还是版本的更新,首先展现给用户眼前的也就只有它了,当然这里讲的不是APP引导页的美化而是APP引导页的高度集成,一行代码搞 ...

  4. iOS开发之应用首次启动显示用户引导

    这个功能的重点就是在如何判断应用是第一次启动的. 其实很简单 我们只需要在一个类里面写好用户引导页面  基本上都是使用UIScrollView 来实现, 新建一个继承于UIViewController ...

  5. Android零基础入门第69节:ViewPager快速实现引导页

    在很多APP第一次启动时都会出现引导页,在一些APP里面还会包括一些左右滑动翻页和页面轮播切换的情况.在之前也已经学习了AdapterViewFlipper和ViewFlipper,都可以很好的实现, ...

  6. iOS App引导页功能实现

    一.写作原因 以前都没有想着来写点东西,今天遇到件事情让我决定每次还是要做记录.因为以前自己可以轻松的完成pod spec的配置,但是今天在做的时候还是忘了遇到了很多坑.pod spec配置遇到的坑不 ...

  7. Xamarin.Android之引导页的简单制作

    0x01 前言 对于现在大部分的APP,第一次打开刚安装或更新安装的APP都会有几个引导界面,通常这几个引导页是告诉用户 APP有些什么功能或者修改了什么bug.新增了什么功能等等等. 下面就用Xam ...

  8. 如何做好App的引导页?(转)

    http://uedc.163.com/12264.html 当你第一次打开一款应用的时候常常会看到精美的引导页设计,它们在你未使用产品之前提前告知你产品的主要功能与特点,第一次印象的好坏会极大地影响 ...

  9. Android 高级UI设计笔记22:Android 指示引导页(带圆点)

    1. 引导页: 我们在安装某个软件首次运行时,大部分都会有一个引导页的提示,介绍软件新功能的加入或者使用说明等,支持滑动且下面会有几个圆点,显示共有多少页和当前图片的位置,类似如下效果: 2. 引导页 ...

随机推荐

  1. .NET 委托

    委托类型定义      C#编译器处理委托时,先自动产生一个派生自System.MulticastDelegate的密封类.这个类与它的基类System.Delegate一起为委托提供必要的基础设施, ...

  2. 改写js原装的alert样式

    1.将下面的js代码单独到一个js文件中,然后在页面中引用 AlertDialog.js //改写js原装的alert样式 var t; var timeclose = 0; var showBack ...

  3. Spring映射器、适配器、解析器

    1 springmvc的映射器和适配器 1.1springmvc的映射器 根据客户端请求的url,找到处理本次请求的handler(处理器),将url和controller关联起来 1.2spring ...

  4. nodeJS搭建本地服务器

    准备工作: 安装Node JS: 1:安装全局express:在express4.x版本中,安装时语句变为了这样: npm install -g express-generator 2:创建项目: 选 ...

  5. 浅谈Javascript事件模拟

    事件是用来描述网页中某一特定有趣时刻的,众所周知事件通常是在由用户和浏览器进行交互时触发,其实不然,通过Javascript可以在任何时间触发特定的事件,并且这些事件与浏览器创建的事件是相同的.这就意 ...

  6. ThinkPHP动态版本控制

    动态版本控制可以根据时间戳来实现,但是这样的话,每次打开页面都会重新下载加了版本控制的文件,如果你的页面自身打开本来就慢的话, 这样一来,无疑会带来很差的用户体验. 但是如果在每个引用文件后面都手动加 ...

  7. Core Data使用

    注意:每次修改CoreData的Attribute时记得把应用给删除重装,要不会崩,因为建立的数据库文件还在该目录下,里面的字段没有更改,所以不能匹配就会崩溃,切忌,要不就每次进来把文件先删除,再建立 ...

  8. I/O多路复用

    为什么要使用I/O多路复用 假设要求你写一个echo-server服务器,它也能对用户从标准输入键入的交互命令做出响应.在这种情况下, 服务器必须响应两个互相独立的I/O事件: 1) 网络客户端发起的 ...

  9. WPF中的动画——(三)时间线(TimeLine)

    WPF中的动画——(三)时间线(TimeLine) 时间线(TimeLine)表示时间段. 它提供的属性可以让控制该时间段的长度.开始时间.重复次数.该时间段内时间进度的快慢等等.在WPF中内置了如下 ...

  10. 2012 Multi-University #8

    DP+单调队列优化 E One hundred layer 题意:n*m的矩形,从第一层x位置往下走,每一层都可以往左或往右移动最多k步再往下走,问走到n层时所走路径的最大值. 分析:定义,,注意到m ...