iOS中UIView的動畫
ViewController1.h
#import @interface ViewController1 : UIViewController@property(nonatomic,retain)UIView* view1;@end
ViewController1.m
#import "ViewController1.h"@interface ViewController1 ()@end@implementation ViewController1- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self;}- (void)viewDidLoad{ [super viewDidLoad];// Do any additional setup after loading the view. _view1 = [[UIView alloc]init]; _view1.frame = CGRectMake(0, 44, 160, 200); _view1.backgroundColor = [UIColor redColor]; [self.view addSubview:_view1]; //過度動畫的效果,是2個View的切換 UIButton* button2 = [[UIButton alloc]initWithFrame:CGRectMake(20, 340, 150, 30)]; [button2 addTarget:self action:@selector(button2) forControlEvents:UIControlEventTouchUpInside]; [button2 setTitle:@"開始動畫" forState:UIControlStateNormal]; button2.backgroundColor = [UIColor redColor]; [self.view addSubview:button2];}-(void)button2{ // 1 傳統方法 //開始動畫 /*[UIView beginAnimations:@"testanimation" context:nil]; [UIView setAnimationDuration:0.5]; //動畫的代理 [UIView setAnimationDelegate:self]; //動畫的響應事件,使視圖自動回到原來的位置 [UIView setAnimationDidStopSelector:@selector(animationstop)]; [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; //獲得視圖的位置 CGRect frames = self.view1.frame; //將座標移到右邊160處 frames.origin.x = 160; self.view1.frame = frames; [UIView commitAnimations];*/ // 2 用block文法實現 [UIView animateWithDuration:0.5 animations:^{ CGRect frames = self.view1.frame; frames.origin.x = 160; self.view1.frame = frames; //縮放 self.view1.transform = CGAffineTransformScale(self.view1.transform, 0.01, 0.01); }completion:^(BOOL finished) { CGRect frames = self.view1.frame; frames.origin.x = 0; self.view1.frame = frames; //恢複到原始的縮放 self.view1.transform = CGAffineTransformIdentity; }]; }-(void)animationstop{ //傳統方法 [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.5]; CGRect frames = self.view1.frame; frames.origin.x = 0; self.view1.frame = frames; [UIView commitAnimations];}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end