appdelegete.m
#import "AppDelegate.h"app
#import "FirstViewController.h"ide
@interface AppDelegate ()動畫
@end url
@implementation AppDelegatespa
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {.net
// Override point for customization after application launch.3d
_window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];code
[_window setBackgroundColor:[UIColor whiteColor]];orm
//1.建立第一個視圖控制器的對象對象
FirstViewController *first = [[FirstViewController alloc]init];
//2.做爲window的根視圖控制器
_window.rootViewController = first;
[_window makeKeyAndVisible];
return YES;
}
FirstViewController.m
//
// FirstViewController.m
// 05-模態視圖控制器的切換
//
// Created by 千鋒 on 16/4/12.
// Copyright (c) 2016年 樊娟. All rights reserved.
//
#import "FirstViewController.h"
#import "SecondViewController.h"
#import "UIView+FJView.h"
@interface FirstViewController ()
@end
@implementation FirstViewController
#pragma mark -點擊按鈕實現跳轉
- (void)nextView:(UIButton *)btn{
// //1.建立下一個界面的對象
SecondViewController *second = [[SecondViewController alloc]init];
//
//#pragma mark -模態化彈出一個界面
// //2.模態化彈出一個界面
// //參數1:須要彈出的那個視圖控制器對象
// //參數2:是否有動畫
// //參數3:彈出動畫結束後須要作的事情.寫在這個block裏
//// [self presentViewController:second
//// animated:NO completion:^{
////
//// NSLog(@"下一個界面彈出後須要作的事情寫在這兒");
////
//// }];
////
//
//#pragma mark -字符串轉場動畫
// //3.切換動畫(轉場動畫) -- 專門用於界面之間切換的動畫效果
// //a.建立一個轉場動畫的對象
//
// CATransition * transition = [CATransition animation];
//
// //b.設置動畫時間(單位是秒)
// transition.duration = 1;
//
// //c.設置動畫效果
//
// //字符串
//// pageCurl 向上翻一頁
//// pageUnCurl 向下翻一頁
//// rippleEffect 滴水效果
//// suckEffect 收縮效果,如一塊布被抽走
//// cube 立方體效果
//// oglFlip 上下翻轉效果
//// cameraIrisHollowOpen 打開相機的效果
//// cameraIrisHollowClose 關閉相機的效果
//
//#pragma mark -宏定義動畫效果
//// kCATransitionFade 交叉淡化過渡
//// kCATransitionMoveIn 新視圖移到舊視圖上面
//// kCATransitionPush 新視圖把舊視圖推出去
//// kCATransitionReveal 將舊視圖移開,顯示下面的新視圖
//
// [transition setType:@"pageCurl"];
//
//
// //d.設置動畫方向(不是全部的動畫效果都有效)
//#pragma mark -設置動畫方向
//// kCATransitionFromRight;
//// kCATransitionFromLeft(默認值)
//// kCATransitionFromTop;
//// kCATransitionFromBottom
// [transition setSubtype:@"fromLeft"];
//
//
// //e.添加動畫效果
// //轉場動畫只能添加到layer
// [self.view.window.layer addAnimation:transition forKey:nil ];
//
// //在這兒後面的全部的視圖切換都有上面的動畫效果
// //必須關閉切換視圖自帶的動畫效果
// [self presentViewController:second animated:NO completion:nil];
[self.view.window addTransitionAnimationWithDuration:0.1 animationType:(FJTransitionType) FJ_pageCurl direction:FJ_UP];
[self presentViewController:second animated:YES completion:nil];
}
#pragma mark -生命週期相關的方法
//加載view的時候會調用
- (void)loadView{
[super loadView];
NSLog(@"%s",__func__);
}
//view已經加載成功
- (void)viewDidLoad {
[super viewDidLoad];
//設置當前這個界面的背景顏色
self.view.backgroundColor = [UIColor lightGrayColor];
//添加一個按鈕
UIButton *button = [[UIButton alloc]initWithFrame:
CGRectMake(100, 100, 50, 50)];
button.backgroundColor = [UIColor orangeColor];
[self.view addSubview:button];
//添加事件
[button addTarget:self action:@selector(nextView:)
forControlEvents:UIControlEventTouchUpInside];
NSLog(@"%s",__func__);
}
//view將要顯示
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
NSLog(@"%s",__func__);
}
//view已經顯示
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
NSLog(@"%s",__func__);
}
//view將要消失
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
NSLog(@"%s",__func__);
}
//view已經消失
-(void)viewDidDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
NSLog(@"%s",__func__);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
SecondViewController.m
#import "SecondViewController.h"
#import "FirstViewController.h"
#import "UIView+FJView.h"
@interface SecondViewController ()
@end
@implementation SecondViewController
#pragma mark -點擊按鈕回到第一個頁面
- (void)preView:(UIButton *)btn{
//1.回到上一個界面
//讓當前這個視圖控制器對象消失
//參數1:是否動畫
//參數2:動畫結束後的事情在這裏寫block
//self能夠調用這個方法的前提是:self對象是經過present方式彈出的
//當前調用dismiss方法的視圖控制器對象,調用完dismiss方法後會被銷燬;
[self.view.window addTransitionAnimationWithDuration:0.3 animationType:
FJ_rippleEffect direction:FJ_DOWN];
[self dismissViewControllerAnimated:NO completion:^{
}];
}
#pragma mark - 第二個頁面的生命週期方法
//加載view的時候會調用
- (void)loadView{
[super loadView];
NSLog(@"%s",__func__);
}
//view已經加載成功
- (void)viewDidLoad {
[super viewDidLoad];
//設置當前這個界面的背景顏色
self.view.backgroundColor = [UIColor orangeColor];
//添加一個按鈕
UIButton *button = [[UIButton alloc]initWithFrame:
CGRectMake(100, 100, 50, 50)];
button.backgroundColor = [UIColor blackColor];
[self.view addSubview:button];
//添加事件
[button addTarget:self action:@selector(preView:)
forControlEvents:UIControlEventTouchUpInside];
NSLog(@"%s",__func__);
}
//view將要顯示
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
NSLog(@"%s",__func__);
}
//view已經顯示
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
NSLog(@"%s",__func__);
}
//view將要消失
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
NSLog(@"%s",__func__);
}
//view已經消失
-(void)viewDidDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
NSLog(@"%s",__func__);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end