iOS开发教程之微博新特性页面

2020-01-12 13:36:54刘景俊
本文是IOS开发教程系列的第三篇,主要是分享了微博新特性页面的制作源码,希望对大家有所帮助  

BeyondAppDelegate.m


//
// BeyondAppDelegate.m
// 20_帅哥no微博
//
// Created by beyond on 14-8-3.
// Copyright (c) 2014年 com.beyond. All rights reserved.
//

#import "BeyondAppDelegate.h"
#import "BeyondViewController.h"
#import "NewFeatureViewController.h"
#import "OauthViewController.h"
#define kVersionCodeKey (NSString *)kCFBundleVersionKey
@implementation BeyondAppDelegate
// 应用最先执行的方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  // 1,创建窗口
  self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
  // 2,设置窗口的背景色
  self.window.backgroundColor = [UIColor whiteColor];
  // 3,调用自定义方法,判断是不是第一次使用本版本的app,如果是第一次使用,则将窗口的根控制器设为了NewFeature控制器,否则 就直接让主控制器成为了窗口的根控制器
  [self versionCodeCheck];
  // 4,让窗口可见
  [self.window makeKeyAndVisible];
  return YES;
}

// 自定义方法,判断是不是第一次使用本版本的app,如果是第一次使用,则将窗口的根控制器设为了NewFeature控制器,否则 就直接让主控制器成为了窗口的根控制器
- (void)versionCodeCheck
{
  // 1,使用用户偏好,从沙盒中取出旧的版本号

  NSString *oldVersionCode = [[NSUserDefaults standardUserDefaults] objectForKey:kVersionCodeKey];
  NSString *currentVersionCode = [[[NSBundle mainBundle]infoDictionary] objectForKey:kVersionCodeKey];
 
  // 根据版本号的比较结果 进入不同的控制器
  //[self stepIntoViewController:currentVersionCode oldVersion:oldVersionCode];
  //return;
  
#warning block test -===============以下内容,和其中调用的方法,仅用于block调用测试
  if ([currentVersionCode isEqualToString:oldVersionCode]) {
  //if(0){
    [self enterBeyondVC];
  } else {
    // 关键 ,并且保存版本号
    [[NSUserDefaults standardUserDefaults]setObject:currentVersionCode forKey:kVersionCodeKey];
    
    // 进入新特性控制器
    NewFeatureViewController *newVC = [[NewFeatureViewController alloc]init];
    newVC.startBlock = ^(BOOL isSelected){
      log(@"%d",isSelected);
      [self enterBeyondVC];
    };
    self.window.rootViewController = newVC;
  }
}

#warning block test
- (void) enterBeyondVC
{
  // 1,如果进行过Oauth授权,则直接进入主控制器,否则 进行Oauth授权控制器
  if (1) {
    OauthViewController *oauthVC = [[OauthViewController alloc]init];
    self.window.rootViewController = oauthVC;
    return;
  }
  
  
  // 进入主控制器
  BeyondViewController *vc =[[BeyondViewController alloc]init];
  self.window.rootViewController = vc;
}

- (void)stepIntoViewController:(NSString *)curVersion oldVersion:(NSString *)oldVersion
{
  // 比较新旧版本号
  UIViewController *rootViewController = nil;
#warning 测试新特性的view
  if ([curVersion isEqualToString:oldVersion]) {
   //  if (0){
    // 说明不是第一次运行,直接实例化主控制器,将主控制器设置为窗口的根控制器
    // 进入主控制器(主界面之前 先把状态栏,恢复) ios 7 无效
    // [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
    rootViewController = [[BeyondViewController alloc]init];
  } else {
    // 说明是第一次运行,进入新特性控制器,将新特性控制器设置为窗口的根控制器,并且保存版本号
    // 进入新特性控制器(新特性界面之前 先把状态栏,隐藏) ios 7 无效
    // [UIApplication sharedApplication].statusBarHidden = YES;
    // [[UIApplication sharedApplication]setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
    rootViewController = [[NewFeatureViewController alloc]init];
    // 关键 ,并且保存版本号
    [[NSUserDefaults standardUserDefaults]setObject:curVersion forKey:kVersionCodeKey];
  }
  // 设置窗口的根控制器,为相应的控制器
  self.window.rootViewController = rootViewController;
}
@end