zoukankan      html  css  js  c++  java
  • IOS开发小功能1:引导页的开发

    效果图如上,实现的是一个页面引导页,最后跳到主页面,主页面是一个navigationController,但是导航栏给我隐藏了。

    文件目录:自己定制的viewcontroller以及navigationController

    先贴代码吧。

    1、首先是GuideViewController类

    GuideViewController.h

    #import <UIKit/UIKit.h>
    #import "JKViewController.h"
    
    
    @interface GuideViewController : JKViewController <UIScrollViewDelegate>
    
    @property (strong,nonatomic) UIScrollView *scrollView;
    @property (strong,nonatomic) NSMutableArray *slideImages;
    @property (strong,nonatomic) UIPageControl *pageControl;
    
    @end

    GuideViewController.m

    #import "GuideViewController.h"
    #import "JKNavigationController.h"
    
    @interface GuideViewController()
    {
        NSTimer *fanyeTime;
    }
    
    @end
    
    @implementation GuideViewController
    
    @synthesize slideImages,scrollView;
    @synthesize pageControl;
    
    
    -(void)dealloc
    {
        [fanyeTime release];
        [scrollView release];
        [slideImages release];
        [pageControl release];
    }
    
    -(void)viewDidLoad
    {
        [super viewDidLoad];
        //定时器循环
        fanyeTime = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(runTimePage) userInfo:nil repeats:YES];
        //初始化 scrollView
        self.scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 320, self.view.frame.size.height)];
        scrollView.bounces = YES;
        scrollView.pagingEnabled = YES;
        scrollView.delegate = self;
        scrollView.showsHorizontalScrollIndicator = NO;
        [self.view addSubview:scrollView];
        
        //初始化数组,并添加四张照片
        slideImages = [[NSMutableArray alloc]initWithObjects:@"26.jpg",@"27.jpg",@"28.jpg",@"29.jpg",@" ",nil];
        //初始化pageControl
        self.pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(120,440,100,18)];
        [pageControl setCurrentPageIndicatorTintColor:[UIColor redColor]];
        [pageControl setPageIndicatorTintColor:[UIColor blackColor]];
        pageControl.numberOfPages = [self.slideImages count] - 1;
        pageControl.currentPage = 0;
        [pageControl addTarget:self action:@selector(turnPage) forControlEvents:UIControlEventValueChanged];
        [self.view addSubview:pageControl];
        
        //创建四个图片 imageView
        for (int i = 0; i < [slideImages count]; i++) {
            UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:i]]];        imageView.frame = CGRectMake(320 * i, 0, 320, self.view.frame.size.height);
            
            [scrollView setContentSize:CGSizeMake(320 * [slideImages count], self.view.frame.size.height)];
            [scrollView addSubview:imageView]; // 首页是第0页,默认从第1页开始的。所以+320。。。
            
        }
                       
    }
    
    //scrollView的委托函数
    -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
    {
        NSTimeInterval secondsPerDay = 1*1*3;
        NSDate *thire = [NSDate dateWithTimeIntervalSinceNow:secondsPerDay];
        [fanyeTime setFireDate:thire];
        
        CGFloat pagewidth = self.scrollView.frame.size.width;
        int currentPage = floor((self.scrollView.contentOffset.x - pagewidth/ ([slideImages count]+2)) / pagewidth) + 1;
        
        NSLog(@"currentPage------>%d",currentPage);
        pageControl.currentPage = currentPage;
        
        NSLog(@"slideImages count------>%d",[slideImages count]);
        
        if (currentPage==([slideImages count]-1)){
            
            [self tiaozhuan];
        }
        
    }
    //
    -(void)tiaozhuan
    {
        JKNavigationController *navigationController = [[[JKNavigationController alloc] initWithRootViewController:[[[JKViewController alloc]init]autorelease]]autorelease];
        navigationController.navigationBarHidden = YES;
        [self presentViewController:navigationController animated:YES completion:nil];
        
    }
    
    //pagecontrol的方法
    -(void)turnPage
    {
        int page = pageControl.currentPage;
        NSLog(@"page----->%d",page);
        [self.scrollView scrollRectToVisible:CGRectMake(320*page,0,320,460) animated:NO];
        if (page == 3) {
            [fanyeTime invalidate];
            [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(tiaozhuan) userInfo:nil repeats:YES];
            
        }
        
    }
    //定时器绑定方法
    -(void)runTimePage
    {
        int page = pageControl.currentPage;
        page++;
        pageControl.currentPage = page;
        [self turnPage];
    }
    
    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    @end

    2、接着是YCScroView类

    YCScroView.h

    #import <UIKit/UIKit.h>
    @protocol TapImageDelegate <NSObject>
    
    -(void)tapImage:(int)index;
    
    @end
    
    @interface YCScroView : UIView
    
    @property (retain,nonatomic) id<TapImageDelegate>delegate;
    
    -(id)initWithArray:(NSArray*)array WithTitle:(NSString *)title WithFrame:(CGRect)frame;
    @end

    YCScroView.v

    #import "YCScroView.h"
    #define Max 10
    
    @interface YCScroView() <UIScrollViewDelegate>
    {
        NSArray *_array;
        int pageWidth,pageHight;
    }
    @property (strong,nonatomic)UIScrollView *scrollView;
    @property (strong,nonatomic)NSMutableArray *slideImages;
    @property (strong,nonatomic)UIPageControl *pageControl;
    @property (strong,nonatomic)UITapGestureRecognizer *tap;
    @end
    
    @implementation YCScroView
    @synthesize scrollView,slideImages;
    @synthesize pageControl;
    @synthesize tap;
    
    
    -(id)initWithArray:(NSArray *)array WithTitle:(NSString *)title WithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self) {
            _array = array;
            pageWidth = frame.size.width;
            pageHight = frame.size.height;
            
            [self creatScollView];
        }
        return self;
    }
    
    -(void)creatScollView
    {
        self.scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, pageWidth, pageHight)];
        scrollView.bounces = YES;
        scrollView.pagingEnabled = YES;
        scrollView.delegate = self;
        scrollView.userInteractionEnabled = YES;
        scrollView.showsHorizontalScrollIndicator = NO;
        [self addSubview:scrollView];
        slideImages = [NSMutableArray arrayWithArray:_array];
        [slideImages retain];
        self.pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(120, pageHight-20, 100, 18)];
        [pageControl setCurrentPageIndicatorTintColor:[UIColor whiteColor]];
        [pageControl setPageIndicatorTintColor:[UIColor grayColor]];
        pageControl.numberOfPages = [_array count];
        pageControl.currentPage = 0;
          //  [pageControl addTarget:self action:@selector(turnPage) forControlEvents:UIControlEventValueChanged]; // 触摸mypagecontrol触发change这个方法事件
        [self addSubview:pageControl];
        
        for (int i =0; i<[slideImages count]; i++) {
            UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:i]]];
            imageView.frame = CGRectMake((pageWidth * i)+ pageWidth, 0, pageWidth, pageHight);
            [scrollView addSubview:imageView]; // 首页是第0页,默认从第1页开始的。所以+320。。。
        }
        UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:([slideImages count]-1)]]];
        imageView.frame = CGRectMake(0, 0, pageWidth, pageHight);
        [scrollView addSubview:imageView];
        //取数组第一张图片,放在最后
        imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:0]]];
        imageView.frame = CGRectMake((pageWidth * ([slideImages count] + 1)) , 0, pageWidth, pageHight); // 添加第1页在最后 循环
        [scrollView addSubview:imageView];
        
        [scrollView setContentSize:CGSizeMake(pageWidth * ([slideImages count] + 2), pageHight)]; //  +上第1页和第4页  原理:4-[1-2-3-4]-1
        [scrollView setContentOffset:CGPointMake(0, 0)];
        [self.scrollView scrollRectToVisible:CGRectMake(pageWidth,0,pageWidth,pageHight) animated:NO];
    
        [self addTapEventOnMyScrollView];
        UIImageView *View=[[UIImageView alloc]initWithFrame:CGRectMake(0, 94, pageWidth, 2)];
        View.image=[UIImage imageNamed:@"huixian.png"];
        [self addSubview:View];
        
        UIImageView *View1=[[UIImageView alloc]initWithFrame:CGRectMake(0, 94, 80, 2)];
        View1.image=[UIImage imageNamed:@"lanxian.png"];
        View1.tag=1000;
        [self addSubview:View1];
    
    }
    
    -(void)addTapEventOnMyScrollView;
    {
        tap = [[UIGestureRecognizer alloc] initWithTarget:self action:@selector(tapEvent)];
        [scrollView addGestureRecognizer:tap];
    }
    
    -(void)tapEvent
    {
        [self.delegate tapImage:pageControl.currentPage];
    }
    
    -(void)scrollViewDidScroll:(UIScrollView *)scrollView
    {
        CGFloat pagewidth = self.scrollView.frame.size.width;
        int page = floor((self.scrollView.contentOffset.x - pagewidth/([slideImages count]+2))/pagewidth)+1;
        page --;  // 默认从第二页开始
        pageControl.currentPage = page;
    }
    
    -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
    {
        CGFloat pagewidth = self.scrollView.frame.size.width;
        int currentPage = floor((self.scrollView.contentOffset.x - pagewidth/ ([slideImages count]+2)) / pagewidth) + 1;
        if (currentPage==0)
        {
            [self.scrollView scrollRectToVisible:CGRectMake(320 * [slideImages count],0,320,pageHight) animated:NO]; // 序号0 最后1页
        }
        else if (currentPage==([slideImages count]+1))
        {
            [self.scrollView scrollRectToVisible:CGRectMake(320,0,320,pageHight) animated:NO]; // 最后+1,循环第1页
        }
        
        UIImageView* imageView=(UIImageView*)[self viewWithTag:1000];
        [imageView removeFromSuperview];
        
        UIImageView* imageview=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"lanxian.png"]];
        imageview.frame=CGRectMake(pageControl.currentPage*80, 94, 80, 2);
        imageview.tag=1000;
        [self addSubview:imageview];
    }
    
    - (void)runTimePage
    {
        int page = pageControl.currentPage; // 获取当前的page
        page++;
        page = page > [slideImages count]-1 ? 0 : page ;
        pageControl.currentPage = page;
        [self turnPage];
    }
    // pagecontrol 选择器的方法
    - (void)turnPage
    {
        int page = pageControl.currentPage; // 获取当前的page
        [self.scrollView scrollRectToVisible:CGRectMake(320*(page+1),0,320,460) animated:NO]; // 触摸pagecontroller那个点点 往后翻一页 +1
    }
    -(void)dealloc{
        
        [super dealloc];
    }
    
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    {
        return (interfaceOrientation == UIInterfaceOrientationPortrait);
    }
    
    
    
    @end

    这是来那个最主要的类,完成这两个类,基本上引导页就已经完成了。

    代码下载 

  • 相关阅读:
    图像处理之基础---特征向量的 几何意义
    图像处理之基础---仿射变换
    图像处理之基础---周末戏说卷积
    图像处理之基础---内积和外积
    图像处理之基础---最小二乘积
    图像处理之基础---大话小波和卷积
    嵌入式开发之项目---遥控小车课题设计
    ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 04. 中间件
    ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 03. 服务注册和管道
    ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 02. Web Host 的默认配置
  • 原文地址:https://www.cnblogs.com/ymonke/p/3412931.html
Copyright © 2011-2022 走看看