关闭

【iOS开发系列】版本新特性界面

标签: 版本新特性iOS
255人阅读 评论(0) 收藏 举报
分类:

首先我们需要创建一个版本新特性的控制器,继承自UIViewController

@interface NewFeatureViewController ()<UIScrollViewDelegate>
{
    UIPageControl *_page;
    UIScrollView *_scroll;
}

@end
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">在实现模块中写如下代码</span>

#pragma mark - viewDidLoad
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    [self.view setBackgroundColor:[UIColor whiteColor]];
    
    /* 1.添加UIScrollView */
    [self addScrollView];
    
    /* 2.添加图片 */
    [self addScrollImages];
    
    /* 3.添加UIPageControl */
    [self addPageControl];
}
#pragma mark - UI界面初始化
#pragma mark 添加滚动视图
- (void)addScrollView
{
    UIScrollView *scroll = [[UIScrollView alloc]init];          // 实例化scrollView
    scroll.frame = self.view.bounds;                            // 设置scroll的尺寸
    scroll.showsHorizontalScrollIndicator = NO;                 // 隐藏水平滚动条
    CGSize size = scroll.frame.size;                            // 取出scrollView.frame.size赋值于size
    scroll.contentSize = CGSizeMake(size.width * KCount, 0);    // 设置滚动区域的宽和高
    scroll.pagingEnabled = YES;                                 // 分页
    scroll.delegate = self;                                     // 遵守代理方法
    [self.view addSubview:scroll];                              // 将scroll添加到控制器视图
    _scroll = scroll;
}
#pragma mark 添加滚动显示的图片
- (void)addScrollImages
{
    CGSize size = _scroll.frame.size;
    for (int i = 0; i < KCount; i++)
    {
        UIImageView *imageView = [[UIImageView alloc]init];
        
        /* 显示图片 */
        NSString *name = [NSString stringWithFormat:@"new_feature_%d.png", i + 1 ];
        imageView.image = [UIImage imageNamed:name];
        
        /* 设置Frame */
        imageView.frame = CGRectMake(i * size.width, 0, size.width, size.height);
        [_scroll addSubview:imageView];
        
        /* 在最后一页创建'立即体验'按钮 */
        if (i == KCount - 1)
        {
            /* 立即体验按钮(开始) */
            UIButton *experienceNowButton = [UIButton buttonWithType:UIButtonTypeCustom];
            experienceNowButton.center =  CGPointMake(size.width *0.5, size.height *0.85);
            experienceNowButton.bounds = (CGRect){CGPointZero,CGSizeMake(100, 35)};
            [experienceNowButton setTitle:@"立即体验" forState:UIControlStateNormal];
            experienceNowButton.layer.cornerRadius = 3;
            [experienceNowButton setBackgroundColor:COLOR_RED1];
            [experienceNowButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
            [experienceNowButton.titleLabel setFont:[UIFont systemFontOfSize:(IS_IPHONE6_6PLS ? 18 : 16) weight:15]];
            [experienceNowButton addTarget:self action:@selector(experienceNowButtonClick) forControlEvents:UIControlEventTouchUpInside];
            [imageView addSubview:experienceNowButton];
            
        }
    }
}
#pragma mark 添加分页指示器UIPageControl
- (void)addPageControl
{
    CGSize size = self.view.frame.size;
    UIPageControl *page = [[UIPageControl alloc]init];                  // 实例化UIPageControl
    page.center = CGPointMake(size.width * 0.5, size.height * 0.95);    // 设置page位置
    page.numberOfPages = KCount;                                        // page的页数
    page.currentPageIndicatorTintColor = COLOR_RED1;                    // 当前选中的page颜色
    page.pageIndicatorTintColor = [UIColor lightGrayColor];             // 没有选中的page颜色
    page.bounds = CGRectMake(0, 0, 150, 0);                             // page的大小
    [self.view addSubview:page];                                        // 将page添加到视图中去
    _page = page;
}
#pragma mark -监听按钮点击
#pragma mark 开始
- (void)experienceNowButtonClick
{
    /*
     * 值得注意的一点:
     * 在显示控制器view之前显示状态栏:控制器view是460
     * 在显示控制器view之后显示状态栏:控制器view是480
     * 通过以上可以得出一个结论:
     * 控制器的view是延迟加载的(懒加载),也就是说是需要显示或者是用到的时候才会加载的
     */
    
    /* 从新特性跳到主界面 需要先将状态栏弄出来 */
    [UIApplication sharedApplication].statusBarHidden = NO;
    /* 将根控制器指向主界面,这样销毁了新特性界面,释放内存 */
    self.view.window.rootViewController = [[ViewController alloc]init];
}
#pragma mark -滚动代理的方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    /* 当前页数 */
    _page.currentPage = scrollView.contentOffset.x / scrollView.frame.size.width;
}


在AppDelegate中找到如下方法,添加如下代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    if ([self isFirstUseNewVersion])
    {
        self.window.rootViewController = [[NewFeatureViewController alloc] init];
    }
    else
    {
        _globalVariables.mlNavigationController = [[MLNavigationController alloc] initWithRootViewController:vc];
        self.window.rootViewController = _globalVariables.mlNavigationController;
    }
当然、里面用到了这个方法,这个是我们自己添加判断版本号的代码
#pragma mark - 判断是否是第一次使用当前版本
- (BOOL) isFirstUseNewVersion
{
    NSString *key = (NSString *)kCFBundleVersionKey;
    
    /* 1.从info.plist中取出版本号 */
    NSString *version = [NSBundle mainBundle].infoDictionary[key];
    
    /* 2.从沙盒中取出上次存储的版本号 */
    NSString *saveVersion = [[NSUserDefaults standardUserDefaults] objectForKey:key];
    
    /* 3.比较两个版本号是否相同 */
    
    /* 不是第一次使用这个版本 */
    if ([version isEqualToString:saveVersion])
        return NO;
    /* 版本号不一样:第一次使用这个版本 */
    else
    {
        /* 将新版本号写入沙盒 */
        [[NSUserDefaults standardUserDefaults] setObject:version forKey:key];
        [[NSUserDefaults standardUserDefaults] synchronize];
        return YES;
    }
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:23117次
    • 积分:551
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:15篇
    • 译文:2篇
    • 评论:1条
    文章分类
    最新评论