IOS程序启动引导示例

摘要

本章简述了IOS开发过程中程序第一次启动时的程序引导的示例,主要用到了UIScrollView作引导界面,使用NSUserDefaults相关键值判断程序是否第一次启动。


主要技术

判断是否第一次启动

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    // 是否第一次启动
    if(![[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"])
    {
        // 注意设置为TRUE
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"everLaunched"];
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstLaunch"];
        
        ViewController* viewController = [[ViewController alloc] init];
        viewController.firsttime = YES;
        self.window.rootViewController = viewController;
    }
    else
    {
        NSLog(@"不是第一次启动");
    }
    
    
    return YES;
}
此处注意,判断第一成功后把相关键值的值设置成了YES,使得下次不会再判断为YES,网上好多人都没有设置,但是我没设置就老是判断为是第一次启动,不知道其他人是什么情况。

同时,因为启动页面我是把他作为子页面放在程序的主页面里的,所以这里通过主页面控制器的属性来判断要不要显示引导页面,此处在判断为第一次启动后,将属性firsttime设置为YES,然后程序就会显示引导页面。


显示引导页面

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    [self initUI];
}

- (void)initUI
{
    // 启动动画
    if(self.firsttime)
    {
        [self showStartPage];
        self.firsttime = NO;
    }
    else
    {
        self.view.backgroundColor = [UIColor whiteColor];
        UILabel* label = [[UILabel alloc] initWithFrame:CGRectMake(20, 200, 350, 40)];
        label.text = @"欢迎你来到我的应用,我们在完善中...";
        [self.view addSubview:label];
    }
}

- (void)showStartPage
{
    NSInteger pageNumber = 3;
    
    // 滚动页
    UIScrollView* scrollView = [[UIScrollView alloc] initWithFrame:self.view.frame];
    [scrollView setContentSize:CGSizeMake(scrollView.frame.size.width*pageNumber, 0)];
    scrollView.pagingEnabled = YES;
    [self.view addSubview:scrollView];
    _scrollView = scrollView;
    
    CGRect frame = self.view.frame;
    frame.origin.x -= frame.size.width;
    
    for (NSInteger i=0; i<pageNumber; i++)
    {
        frame.origin.x += frame.size.width;
        UIImageView* imageView = [[UIImageView alloc] initWithFrame:frame];
        [imageView setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%ld.jpg", i+1]]];
        //[imageView setContentMode:UIViewContentModeScaleAspectFill];
        [scrollView addSubview:imageView];
    }
    
    CGFloat w = frame.size.width/2;
    CGFloat h = 40;
    CGFloat x = frame.origin.x + (frame.size.width-w)/2;
    CGFloat y = frame.origin.y+frame.size.height-60;
    
    UIButton* welcomeButton = [[UIButton alloc] initWithFrame:CGRectMake(x, y, w, h)];
    [welcomeButton setTitle:@"进入查看更多精彩" forState:UIControlStateNormal];
    [scrollView addSubview:welcomeButton];
    
    [welcomeButton addTarget:self action:@selector(onWelcome:) forControlEvents:UIControlEventTouchUpInside];
}

- (void)onWelcome:(id)sender
{
    for (UIView* view in [_scrollView subviews])
    {
        [view removeFromSuperview];
    }
    [_scrollView removeFromSuperview];
    
    [self initUI];
}
当外面设置了firsttime为YES时,会显示引导页面,此处将三幅图片作为引导页面示意的,使用控件UIScrollView管理。同时最后一个页面添加了一个按钮,点击该按钮即可进入程序主界面。


运行结果

技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。