zoukankan      html  css  js  c++  java
  • iOS 界面启动时,功能新特征显示

    APP新启动的时候,都会有几张新的图片滑动,才能到主的界面。现在,我们新建一个控制器,专门来处理新特性,直接上代码.

    第一步:新建一个NewfeatureController

    //
    //  HWNewfeatureController.m
    //  Weibo
    //
    //  Created by jys on 15/3/24.
    //  Copyright (c) 2015年 weibo. All rights reserved.
    //
    
    #import "HWNewfeatureController.h"
    #import "HWTabBarViewController.h"
    
    #define HWNewfeatureCount 4
    
    @interface HWNewfeatureController ()<UIScrollViewDelegate>
    
    @property (nonatomic,weak) UIPageControl *pageControl;
    @property (nonatomic,weak) UIScrollView *scrollView;
    
    @end
    
    @implementation HWNewfeatureController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        //1.创建一个scrollView,显示所有的新特性图片
        UIScrollView *scrollView=[[UIScrollView alloc] init];
        scrollView.frame=self.view.bounds;
        [self.view addSubview:scrollView];
        self.scrollView=scrollView;
        
        //2.添加图片到scrollView中
        CGFloat scrollW=scrollView.width;
        CGFloat scrollH=scrollView.height;
        
        for (int i=0; i<HWNewfeatureCount; i++) {
            UIImageView *imageView=[[UIImageView alloc] init];
            imageView.width=scrollW;
            imageView.height=scrollH;
            imageView.y=0;
            imageView.x=i*scrollW;
            
            //显示图片
            NSString *name = [NSString stringWithFormat:@"new_feature_%d", i + 1];
            imageView.image=[UIImage imageNamed:name];
            [scrollView addSubview:imageView];
            
            // 如果是最后一个imageView,就往里面添加其他内容
            if (i == HWNewfeatureCount - 1) {
                [self setupLastImageView:imageView];
            }
        }
        
        //3.设置scrollView的其它属性
        //如果想要某个方向上不能滚动,那么这个方向对应的尺寸数值传0即可
        scrollView.contentSize=CGSizeMake(scrollView.width*HWNewfeatureCount, 0);
        scrollView.bounces=NO;//去除弹簧效应
        scrollView.pagingEnabled=YES;//分页,一张一张的滚动
        scrollView.showsHorizontalScrollIndicator=NO;//没有滚动条
        scrollView.delegate = self;
        
        //4.添加pageController分页,展示目前看的是第几页
        UIPageControl *pageControl=[[UIPageControl alloc] init];
        pageControl.numberOfPages=HWNewfeatureCount;
        pageControl.backgroundColor=[UIColor redColor];
        pageControl.currentPageIndicatorTintColor=HWColor(253, 98, 42);
        pageControl.pageIndicatorTintColor=HWColor(189, 189, 189);
        pageControl.centerX=scrollW*0.5;
        pageControl.centerY=scrollH-50;
        [self.view addSubview:pageControl];
        self.pageControl=pageControl;
        
        // UIPageControl就算没有设置尺寸,里面的内容还是照常显示的,该控件相对特别
        //    pageControl.width = 100;
        //    pageControl.height = 50;
        //    pageControl.userInteractionEnabled = NO;
    }
    
    //当前页面滚到哪页
    -(void)scrollViewDidScroll:(UIScrollView *)scrollView
    {
        double page=scrollView.contentOffset.x/scrollView.width;
        self.pageControl.currentPage=(int)(page+0.5);
    }
    
    /**
     *  初始化最后一个imageView
     *
     *  @param imageView <#imageView description#>
     */
    -(void)setupLastImageView:(UIImageView *)imageView
    {
        //开启交互功能
        imageView.userInteractionEnabled=YES;
        
        //1.分享给大家
        UIButton *shareBtn=[[UIButton alloc]init];
        [shareBtn setImage:[UIImage imageNamed:@"new_feature_share_false"]  forState:UIControlStateNormal];
        [shareBtn setImage:[UIImage imageNamed:@"new_feature_share_true"] forState:UIControlStateSelected];
        
        [shareBtn setTitle:@"分享给大家" forState:UIControlStateNormal];
        [shareBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        shareBtn.titleLabel.font=[UIFont systemFontOfSize:15];
        shareBtn.width=200;
        shareBtn.height=30;
        shareBtn.centerX=imageView.width*0.5;
        shareBtn.centerY=imageView.height*0.65;
        // top left bottom right
        shareBtn.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
        [shareBtn addTarget:self action:@selector(shareClick:) forControlEvents:UIControlEventTouchUpInside];
        [imageView addSubview:shareBtn];
        
        //2.开始微博
        UIButton *startBtn=[[UIButton alloc] init];
        [startBtn setBackgroundImage:[UIImage imageNamed:@"new_feature_finish_button"] forState:UIControlStateNormal];
        [startBtn setBackgroundImage:[UIImage imageNamed:@"new_feature_finish_button_highlighted"] forState:UIControlStateHighlighted];
        startBtn.size=startBtn.currentBackgroundImage.size;
        startBtn.centerX=imageView.width*0.5;
        startBtn.centerY=imageView.height*0.75;
        [startBtn setTitle:@"开始微博" forState:UIControlStateNormal];
        [startBtn addTarget:self action:@selector(startClick) forControlEvents:UIControlEventTouchUpInside];
        [imageView addSubview:startBtn];
        //startBtn.centerX=imageView
        
    }
    
    
    -(void)shareClick:(UIButton *)shareBtn
    {
        //状态取反
        shareBtn.selected=!shareBtn.isSelected;
    }
    
    //开始微博
    -(void)startClick
    {
        UIWindow *window=[UIApplication sharedApplication].keyWindow;
        window.rootViewController=[[HWTabBarViewController alloc]init];
        
    }
    
    
    @end

    上面的代码中,需要注意的是:

    开始微博,显示主界面时,请使用rootViewController来处理,如果用其它方式,新特性界面并没有销毁,留下隐患。

    - (void)startClick
    {
        // 切换到HWTabBarController
        /*
         切换控制器的手段
         1.push:依赖于UINavigationController,控制器的切换是可逆的,比如A切换到B,B又可以回到A
         2.modal:控制器的切换是可逆的,比如A切换到B,B又可以回到A
         3.切换window的rootViewController
         */
        UIWindow *window = [UIApplication sharedApplication].keyWindow;
        window.rootViewController = [[HWTabBarViewController alloc] init];
        
        // modal方式,不建议采取:新特性控制器不会销毁
    //    HWTabBarViewController *main = [[HWTabBarViewController alloc] init];
    //    [self presentViewController:main animated:YES completion:nil];
    }

    第二步,程序启动时,判断版本号。如果版本号不一致,则显示新特性。

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        // 1.创建窗口
        self.window = [[UIWindow alloc] init];
        self.window.frame = [UIScreen mainScreen].bounds;
        
        // 2.设置根控制器
        NSString *key = @"CFBundleVersion";
        // 上一次的使用版本(存储在沙盒中的版本号)
        NSString *lastVersion = [[NSUserDefaults standardUserDefaults] objectForKey:key];
        // 当前软件的版本号(从Info.plist中获得)
        NSString *currentVersion = [NSBundle mainBundle].infoDictionary[key];
        
        if ([currentVersion isEqualToString:lastVersion]) { // 版本号相同:这次打开和上次打开的是同一个版本
            self.window.rootViewController = [[HWTabBarViewController alloc] init];
        } else { // 这次打开的版本和上一次不一样,显示新特性
            self.window.rootViewController = [[HWNewfeatureViewController alloc] init];
            
            // 将当前的版本号存进沙盒
            [[NSUserDefaults standardUserDefaults] setObject:currentVersion forKey:key];
            [[NSUserDefaults standardUserDefaults] synchronize];
        }
        
        // 3.显示窗口
        [self.window makeKeyAndVisible];
        return YES;
    }
  • 相关阅读:
    angular2中*ngFor同时适用*ngIf
    win10 正确安装node-sass方式
    ios10禁止用户缩放
    ubuntu切换全屏
    编译scss文件夹
    清除select中的三角形(下拉)
    js中的!!
    scss封装css3兼容性
    js获取当前时间
    Sql Server 数据分页
  • 原文地址:https://www.cnblogs.com/jys509/p/4370445.html
Copyright © 2011-2022 走看看