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

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

代码下载 

posted @ 2013-11-07 17:48  ymonke  阅读(720)  评论(0编辑  收藏  举报