iOS 首次启动画面,新装或更新用户可以通过它查看简介。

//

//  GuideViewController.h

//  Guide

//

//  Created by twb on 13-9-17.

//  Copyright (c) 2013年 twb. All rights reserved.

//



#import <UIKit/UIKit.h>



@interface GuideViewController : UIViewController <UIScrollViewDelegate>



@property (nonatomic, strong) UIScrollView *scrollView;

@property (nonatomic, strong) UIPageControl *pageControl;

@property (nonatomic, strong) NSMutableArray *images;



+ (GuideViewController *)shareInstance;

+ (void)show;

+ (void)hide;



@end

 

//

//  GuideViewController.m

//  Guide

//

//  Created by twb on 13-9-17.

//  Copyright (c) 2013年 twb. All rights reserved.

//



#import "GuideViewController.h"



@interface GuideViewController ()



@property (nonatomic, assign) BOOL animating;



@end



@implementation GuideViewController



+ (GuideViewController *)shareInstance

{

    @synchronized(self)

    {

        static GuideViewController *sharedGuide = nil;

        if (sharedGuide == nil)

        {

            sharedGuide = [[self alloc] initWithNibName:@"GuideViewController" bundle:nil];

        }

        return sharedGuide;

    }

}



+ (void)show

{

    [[GuideViewController shareInstance].scrollView setContentOffset:CGPointMake(0.0f, 0.0f)];

	[[GuideViewController shareInstance] showGuide];

}



+ (void)hide

{

	[[GuideViewController shareInstance] hideGuide];

}



- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {

        // Custom initialization

        

    }

    return self;

}



- (void)viewDidLoad

{

    [super viewDidLoad];

    

    self.view.backgroundColor = kClearColor;

    

    // Do any additional setup after loading the view from its nib.

    [self setupContent];

    [self setupScrollView];

    [self setupPageControl];

    [self setupScrollViewContent];

}



- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}



- (void)viewDidUnload

{

    [self setScrollView:nil];

    [self setPageControl:nil];

    [super viewDidUnload];

}



#pragma mark - setup part.



- (void)setupContent

{

    // These images retrieve from server. it is empty for just now.

    self.images = [NSMutableArray arrayWithArray:@[@"Default.png", @"Default.png", @"Default.png", @"Default.png"]];

}



- (void)setupScrollView

{

    self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, kScreenWidth, kScreenHeight - kScreenStatusBarHeight)];

    self.scrollView.pagingEnabled = YES;

    self.scrollView.delegate = self;

    self.scrollView.backgroundColor = kClearColor;

    self.scrollView.showsHorizontalScrollIndicator = NO;

    self.scrollView.showsVerticalScrollIndicator = NO;

//    self.scrollView.backgroundColor = kOrangeColor;

    self.scrollView.contentSize = CGSizeMake(kScreenWidth * self.images.count, kScreenHeight - kScreenStatusBarHeight);

    [self.view addSubview:self.scrollView];

}



- (void)setupPageControl

{

    self.pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0.0f, self.scrollView.frame.size.height - 30.0f, kScreenWidth, 30.0f)];

    self.pageControl.hidesForSinglePage = YES;

    self.pageControl.numberOfPages = self.images.count;

    [self.pageControl addTarget:self action:@selector(pageChanged:) forControlEvents:UIControlEventValueChanged];

    [self.view addSubview:self.pageControl];

}



- (void)setupScrollViewContent

{

    for (NSInteger i = 0; i < self.images.count; i++)

    {

        UIImageView *iv = [[UIImageView alloc] initWithFrame:CGRectMake(i * kScreenWidth, 0.0f, self.scrollView.frame.size.width, self.scrollView.frame.size.height)];

        iv.userInteractionEnabled = YES;

        iv.image = kImageNamed(self.images[i]);

        if (i % 2)

        {

            iv.backgroundColor = kLightGrayColor;

        }

        else

        {

            iv.backgroundColor = kGrayColor;

        }

        [self.scrollView addSubview:iv];

        

        if (i == self.images.count - 1)

        {

            // the end page.

            [iv addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(enter:)]];

        }

    }

}



#pragma mark - Common part.



- (CGRect)onScreenFrame

{

	return [UIScreen mainScreen].applicationFrame;

}



- (CGRect)offScreenFrame

{

	CGRect frame = [self onScreenFrame];

	switch ([UIApplication sharedApplication].statusBarOrientation)

    {

		case UIInterfaceOrientationPortrait:

			frame.origin.y = frame.size.height;

			break;

		case UIInterfaceOrientationPortraitUpsideDown:

			frame.origin.y = -frame.size.height;

			break;

		case UIInterfaceOrientationLandscapeLeft:

			frame.origin.x = frame.size.width;

			break;

		case UIInterfaceOrientationLandscapeRight:

			frame.origin.x = -frame.size.width;

			break;

	}

	return frame;

}



- (UIWindow *)mainWindow

{

    UIApplication *app = [UIApplication sharedApplication];

    if ([app.delegate respondsToSelector:@selector(window)])

    {

        return [app.delegate window];

    }

    else

    {

        return [app keyWindow];

    }

}



#pragma mark - Event part.



- (void)enter:(UITapGestureRecognizer *)sender

{

    [self hideGuide];

    self.dataManager.defaults.firstLaunch = YES;

}



- (void)showGuide

{

    if (!self.animating)

    {

        [GuideViewController shareInstance].view.frame = [self offScreenFrame];

        [[self mainWindow] addSubview:[GuideViewController shareInstance].view];

        self.animating = YES;

        [UIView animateWithDuration:0.25f animations:^{

            [GuideViewController shareInstance].view.frame = [self onScreenFrame];

        } completion:^(BOOL finished) {

            self.animating = NO;

        }];

    }

}



- (void)hideGuide

{

    if (!self.animating)

    {

        self.animating = YES;

        [UIView animateWithDuration:0.40f animations:^{

#if 0

            [GuideViewController shareInstance].view.frame = [self offScreenFrame];

#else

            [GuideViewController shareInstance].view.transform = CGAffineTransformMakeScale(1.25f, 1.25f);

            [GuideViewController shareInstance].view.alpha = 0.0f;

#endif

        } completion:^(BOOL finished) {

            [[GuideViewController shareInstance].view removeFromSuperview];

            self.animating = NO;

        }];

    }

}



- (void)pageChanged:(UIPageControl *)sender

{

    NSInteger page = sender.currentPage;

    [self.scrollView setContentOffset:CGPointMake(page * kScreenWidth, 0.0f) animated:YES];

}



#pragma mark - UIScrollViewDelegate



- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

{

    CGFloat dx = scrollView.contentOffset.x;

    NSInteger page = dx / kScreenWidth;

    

    self.pageControl.currentPage = page;

}



@end


如何使用?

 

 "AppDelegate.m"文件中,

 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    // Override point for customization after application launch.

    

    // ...

    

    // Show Guide?

    if (!self.dataManager.defaults.firstLaunch)

    {

        [GuideViewController show];

    }

    

    return YES;

}


 


 

你可能感兴趣的:(ios)