一、首先第一步,写好用户轮播页的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的根视图变换即可。
时间: 2024-10-27 09:52:56