zoukankan      html  css  js  c++  java
  • swift--添加新手引导页

    swift和oc逻辑上都是一样的,只是写法不一样,可以使用一个view,也可以使用一个viewController,两种都可以的,使用view注意初始化的时候给他一个frame,vc的话,直接在本控制器里面写控制即可!

    1,创建一个vc,然后在里面初始化一个scrollview,升值contentsize为3 * 页面宽度,然后添加图片,最后可以实现相应的代理方法,判断最后是点击进入主页,还是滑动

    具体代码如下:

    import UIKit
    
    class hDisplayViewController: UIViewController,UIScrollViewDelegate {
        
        //页面数量
        var numOfPages = 3
        
        override func viewDidLoad() {
            super.viewDidLoad()
            let frame = self.view.bounds
            //scrollView的初始化
            let scrollView = UIScrollView()
            scrollView.frame = self.view.bounds
            scrollView.delegate = self
            //为了能让内容横向滚动,设置横向内容宽度为3个页面的宽度总和
            scrollView.contentSize = CGSize(frame.size.width * CGFloat(numOfPages),
                                            height:frame.size.height)
            print("(frame.size.width*CGFloat(numOfPages)),(frame.size.height)")
            scrollView.isPagingEnabled = true
            scrollView.showsHorizontalScrollIndicator = false
            scrollView.showsVerticalScrollIndicator = false
            scrollView.scrollsToTop = false
            for i in 0..<numOfPages{
                let imgfile = "bg(Int(i+1)).png"
                print(imgfile)
                let image = UIImage(named:"(imgfile)")
                let imgView = UIImageView(image: image)
                imgView.frame = CGRect(x:frame.size.width*CGFloat(i), y:CGFloat(0),
                                       frame.size.width, height:frame.size.height)
                scrollView.addSubview(imgView)
            }
            scrollView.contentOffset = CGPoint.zero
            self.view.addSubview(scrollView)
        }
        
        func scrollViewDidScroll(_ scrollView: UIScrollView) {
            print("scrolled:(scrollView.contentOffset)")
            let twidth = CGFloat(numOfPages-1) * self.view.bounds.size.width
            //如果在最后一个页面继续滑动的话就会跳转到主页面
            if scrollView.contentOffset.x > twidth {
    //            let mainStoryboard = UIStoryboard(name:"Main", bundle:nil)
    //            let viewController = mainStoryboard.instantiateInitialViewController()
    //           self.present(MainVC(), animated: true, completion: nil)
                let rootVC = UIApplication.shared.delegate as! AppDelegate
                rootVC.window?.rootViewController = MainVC() } } }

    2,在appdelegate里面写如下代码,判断是否第一次安装,

      //这里判断是否第一次启动APP
            if (!(UserDefaults.standard.bool(forKey: "everLaunched"))) {
                UserDefaults.standard.set(true, forKey:"everLaunched")
                let guideViewController = hDisplayViewController()
                self.window!.rootViewController=guideViewController;
                print("guideview launched!")
            }

    如下图:

    这样就完成了!

    下面分享一个oc版的:

    .h

    @interface hDisplayView : UIView

    .m :注意实现代理方法,判断偏移量或者其他的都行,因为是view,也可以添加手机或者按钮(建议frame是全屏幕大小的),然后实现响应事件隐藏就行了!

    #import "hDisplayView.h"
    
    @interface hDisplayView ()<UIScrollViewDelegate>
    {
        UIScrollView    *_bigScrollView;
        NSMutableArray  *_imageArray;
        UIPageControl   *_pageControl;
    }
    
    @end
    
    @implementation hDisplayView
    
    -(instancetype)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self) {
            _imageArray = [@[@"闪屏1.png",@"闪屏2.png", @"闪屏3.png",@"闪屏4.png"]mutableCopy];
            
    //        _imageArray = [NSMutableArray arrayWithObjects:@"闪屏1.png",@"闪屏2.png", @"闪屏3.png",@"闪屏4.png", nil];
            
            UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, MainScreen_width, MainScreen_height)];
            
            scrollView.contentSize = CGSizeMake((_imageArray.count + 1)*MainScreen_width, MainScreen_height);
            //设置反野效果,不允许反弹,不显示水平滑动条,设置代理为自己
            scrollView.pagingEnabled = YES;//设置分页
            scrollView.bounces = NO;
            scrollView.showsHorizontalScrollIndicator = NO;
            scrollView.delegate = self;
            [self addSubview:scrollView];
            _bigScrollView = scrollView;
            
            for (int i = 0; i < _imageArray.count; i++) {
                UIImageView *imageView = [[UIImageView alloc]init];
                imageView.frame = CGRectMake(i * MainScreen_width, 0, MainScreen_width, MainScreen_height);
                UIImage *image = [UIImage imageNamed:_imageArray[i]];
                imageView.image = image;
                
                [scrollView addSubview:imageView];
            }
            
            UIPageControl *pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(MainScreen_width/2, MainScreen_height - 60, 0, 40)];
            pageControl.numberOfPages = _imageArray.count;
            pageControl.backgroundColor = [UIColor clearColor];
            [self addSubview:pageControl];
            
            _pageControl = pageControl;
            
            //添加手势
            UITapGestureRecognizer *singleRecognizer;
            singleRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleSingleTapFrom)];
            singleRecognizer.numberOfTapsRequired = 1;
            [scrollView addGestureRecognizer:singleRecognizer];
            
        }
        
        return self;
    }
    
    -(void)handleSingleTapFrom
    {
        if (_pageControl.currentPage == 3) {
            
            self.hidden = YES;
            
        }
    }
    
    -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
    {
        if (scrollView == _bigScrollView) {
            
            CGPoint offSet = scrollView.contentOffset;
            
            _pageControl.currentPage = offSet.x/(self.bounds.size.width);//计算当前的页码
            [scrollView setContentOffset:CGPointMake(self.bounds.size.width * (_pageControl.currentPage), scrollView.contentOffset.y) animated:YES];
            
        }
        
        if (scrollView.contentOffset.x == (_imageArray.count) *MainScreen_width) {
            
            self.hidden = YES;
            
        }
        
    }

    调用:

    if (![[NSUserDefaults standardUserDefaults] boolForKey:@"everLaunched"]) {
            [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"everLaunched"];
            [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstLaunch"];
        }
        else{
            [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"firstLaunch"];
        }
        
        if ([[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"]) {
            // 这里判断是否第一次
            
            hDisplayView *hvc = [[hDisplayView alloc]initWithFrame:CGRectMake(0, 0, MainScreen_width, MainScreen_height)];
            
            [self.window.rootViewController.view addSubview:hvc];
            
            [UIView animateWithDuration:0.25 animations:^{
                hvc.frame = CGRectMake(0, 0, MainScreen_width, MainScreen_height);
                
            }];
            
        }

    然后就可以了!

    比较简单,只在此记录下!

  • 相关阅读:
    Mysql 修改默认端口
    通过.pro文件生成C++工程
    内联函数知识点
    DICOM文件添加私有Tag(DCMTK Private Tag)
    poj 1185 炮兵阵地 状压dp
    cf #216 C
    cdoj1365 木杆上的蚂蚁
    cf #214 Dima and Salad
    cf #213 Matrix
    hdu 2222 Keywords Search(AC自动机入门题)
  • 原文地址:https://www.cnblogs.com/hero11223/p/7666086.html
Copyright © 2011-2022 走看看