用户引导页

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户引导页相关的知识,希望对你有一定的参考价值。

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

pageControl的动作action ,changePage这样写:

-(void)changePage{
    
    CGRect frame = self.scrollView.frame;
    frame.origin.x = frame.size.width * self.pageControl.currentPage;
    frame.origin.y = 0;
    [self.scrollView scrollRectToVisible:frame animated:YES];
    self.pageControlIsChangingPage = YES;
}

scrollView的2个主要代理方法:

#pragma mark UIScrollViewDelegate

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

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

把要轮播的画面都添加到scrollView里就好了。

二、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的根视图变换即可。

以上是关于用户引导页的主要内容,如果未能解决你的问题,请参考以下文章

设计基础——引导页你会做吗?

uniapp开发App引导页

app引导页和启动页有啥区别

ViewPager详解引导页

ViewPager详解引导页

启动页和引导页