iOS開発の道--微博新特性ページ

11936 ワード

BeyondApDelegate.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

NewFeature View Controller.h

//
// NewFeatureViewController.h
// 20_  no  
//
// Created by beyond on 14-8-3.
// Copyright (c) 2014  com.beyond. All rights reserved.
//      ,        ,            

#import <UIKit/UIKit.h>

@interface NewFeatureViewController : UIViewController
//     block      ,       ,       ,           
// block copy
@property (nonatomic,copy) void(^startBlock)(BOOL isShare);
@end

NewFeature View Controller.m

//
// NewFeatureViewController.m
// 20_  no  
//
// Created by beyond on 14-8-3.
// Copyright (c) 2014  com.beyond. All rights reserved.
//      ,        ,            
/*
     :
             ,        :
        
 x y      
          
             ,       :
    userinteraction = no
     userinteraction = no
                   
 pageController       ,         0,      
 
 4,          :   center,   bounds
 
 5,                    
 
 normal:  
 highlighted :   (       )
 disabled :  (      )
 selected :    (      )
 
 */
#import "NewFeatureViewController.h"

#define kPicNum 4

#warning viewSize    kWinSize
#define viewSize self.view.bounds.size

@interface NewFeatureViewController ()<UIScrollViewDelegate>
{
  //        
  UIPageControl *_pageControl;
  
  //                        
  UIButton *_shareBtn;
}

@end

@implementation NewFeatureViewController

- (BOOL)prefersStatusBarHidden
{
  //  LoadView      
  NSLog(@"prefers bar hidden");
  return YES;
  
}

- (void)loadView
{
  NSLog(@"load view");
  //    , imageView      view,    ImageView      scrollView
  UIImageView *imgView = [[UIImageView alloc]init];
  //      view( imgView)      
  imgView.frame = [UIScreen mainScreen].bounds;
  NSLog(@"%@",NSStringFromCGRect(imgView.frame));
  //         ,   iphone5,   -568h   
  imgView.image = [UIImage fullScrennImageNamed:@"new_feature_background.png"];
  
  //      view       
  imgView.userInteractionEnabled = YES;
  //    imgeView      view
  self.view = imgView;
}
- (void)viewDidLoad
{
  [super viewDidLoad];
  NSLog(@"view did load ");

  // 1,       ,  UIScrollView,      UIImageView,  ImageView      
  [self addUIScrollView];
  
  // 2,       ,  UIPageControl
  [self addUIPageControl];
}

//      ,  UIScrollView,      UIImageView,  ImageView      
- (void) addUIScrollView
{
  // 1.  UIScrollView,      UIImageView,  ImageView      
  UIScrollView *scrollView = [[UIScrollView alloc] init];
  //          
  scrollView.frame = self.view.bounds;
  //      
  scrollView.showsHorizontalScrollIndicator = NO;
  //          
  scrollView.pagingEnabled = YES;
  //      
  scrollView.contentSize = CGSizeMake(kPicNum * viewSize.width, 0);
  //               
  scrollView.delegate = self;
  //    self.view ImageView
  [self.view addSubview:scrollView];
  
  // 2,      kPicNum        kPicNum imageView scrollView  
  for (int i = 0; i<kPicNum; i++) {
    [self addImageViewToScrollView:scrollView atIndex:i];
  }

}
//      ,  UIPageControl
- (void) addUIPageControl
{
  // 1,  UIPageControl
  _pageControl = [[UIPageControl alloc] init];
  //         center,   bounds
  _pageControl.center = CGPointMake(viewSize.width * 0.5, viewSize.height * 0.95);
  _pageControl.bounds = CGRectMake(0, 0, 100, 0);
  //      
  _pageControl.numberOfPages = kPicNum;
  //   ~                    
  _pageControl.pageIndicatorTintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"new_feature_pagecontrol_point.png"]];
  _pageControl.currentPageIndicatorTintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"new_feature_pagecontrol_checked_point.png"]];
  //          
  _pageControl.userInteractionEnabled = NO;
  //    self.view ImageView
  [self.view addSubview:_pageControl];
}

// scrollView     ,      PageControl     ,          ( scrollview  )
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
  //            x      
  _pageControl.currentPage = scrollView.contentOffset.x / scrollView.frame.size.width;
}

//      ,      kPicNum        kPicNum imageView scrollView  
- (void)addImageViewToScrollView:(UIScrollView *)scrollView atIndex:(int)i
{
  // 1.  imageview
  UIImageView *imageView = [[UIImageView alloc] init];
  //           ,         frame ,          CGRect
  imageView.frame = (CGRect){{i * viewSize.width, 0} , viewSize};
  
  
  // 2.    
  NSString *name = [NSString stringWithFormat:@"new_feature_%d.png", i + 1];

  //         ,   iphone5,   -568h   
  imageView.image = [UIImage fullScrennImageNamed:name];
  
  // 3.  
  [scrollView addSubview:imageView];
  
  // 4.         ,  2   (  、  )
  if (i == kPicNum - 1) {
    //        imageView      ,      2        
    imageView.userInteractionEnabled = YES;
    
    
    //         ,     ,     
    [self addStartBtnInImageView:imageView];
    //         ,     ,          ,       
    [self addShareBtnInImageView:imageView];
  }
}

//         ,     ,     
- (void) addShareBtnInImageView:(UIImageView *)imageView
{
  
  // 2.1.          
  _shareBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  //        imageView  
  [imageView addSubview:_shareBtn];
  
  // 2.2.        
  //           ,                ,          
  CGSize shareBtnNormalBgImgSize = [_shareBtn setBtnBgImgForNormalAndSelectedWithName:@"new_feature_share_false.png" selectedName:@"new_feature_share_true.png"];
  
  // 2.3.  (  , center, bounds)
  _shareBtn.center = CGPointMake(viewSize.width * 0.5, viewSize.height * 0.75);
  //     ,        
  _shareBtn.bounds = (CGRect){CGPointZero, shareBtnNormalBgImgSize};
  
  // 2.4.  
  [_shareBtn addTarget:self action:@selector(shareBtnClick:) forControlEvents:UIControlEventTouchUpInside];
  // 2.5.             
  _shareBtn.adjustsImageWhenHighlighted = NO;
  // 2.6.    
  _shareBtn.selected = YES;
  
}
//         ,           ,            (        ,          )
- (void)shareBtnClick:(UIButton *)shareBtn
{
  shareBtn.selected = !shareBtn.isSelected;
}
//         ,     ,     
- (void) addStartBtnInImageView:(UIImageView *)imageView
{
    
  // 1.1.      
  //        
  UIButton *startBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  //        imageView  
  [imageView addSubview:startBtn];
  
  
  // 1.2.           
  //           ,                ,          
  CGSize startBtnBgImgSize = [startBtn setBtnBgImgForNormalAndHighightedWithName:@"new_feature_finish_button.png"];
  // 1.3.  
  startBtn.center = CGPointMake(viewSize.width * 0.5, viewSize.height * 0.85);
  //                   
  startBtn.bounds = (CGRect){CGPointZero, startBtnBgImgSize};
  
  // 1.4.  
  [startBtn addTarget:self action:@selector(startBtnClick) forControlEvents:UIControlEventTouchUpInside];
  
}

//        ,  block  ,    :       ,           
- (void)startBtnClick
{
  //     block (                )
  if (_startBlock) {
    _startBlock(_shareBtn.isSelected);
  }
}

@end