常用动画
//
// ViewController.m
// AnimationSample
//
// Created by 你好,夏天 on 13-12-13.
// Copyright (c) 2013年 你好,夏天. All rights reserved.
//
#import "ViewController.h"
#import <QuartzCore/QuartzCore.h>
@interfaceViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIView *redview = [[UIView alloc] init];
redview.backgroundColor = [UIColorgreenColor];
redview.tag = 1001;
[redview setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.view addSubview:redview];
NSArray *h_constrains = [NSLayoutConstraintconstraintsWithVisualFormat:@"H:|-40-[redview]-40-|"options:0metrics:nilviews:NSDictionaryOfVariableBindings(redview)];
NSArray *V_constrains = [NSLayoutConstraintconstraintsWithVisualFormat:@"V:|-200-[redview(>=30)]-200-|"options:0metrics:nilviews:NSDictionaryOfVariableBindings(redview)];
[self.view addConstraints:h_constrains];
[self.view addConstraints:V_constrains];
//按钮视图是父视图是根视图
//title@"开始动画"
//V:[button]-20-[view]
//H:|-40-[button(>=100)]-40-|
//didClickAnimationButtton
UIButton *button = [UIButtonbuttonWithType:(UIButtonTypeRoundedRect)];
button.backgroundColor = [UIColorredColor];
[button setTranslatesAutoresizingMaskIntoConstraints:NO];
[button setTitle:@"开始动画" forState:(UIControlStateNormal)];
[button addTarget:selfaction:@selector(didClickAnimation:) forControlEvents:(UIControlEventTouchUpInside)];
[self.view addSubview:button];
NSArray *h_constrainsButton = [NSLayoutConstraintconstraintsWithVisualFormat:@"|-40-[button(>=100)]-40-|"options:0metrics:nilviews:NSDictionaryOfVariableBindings(button)];
NSArray *v_constrainsButton = [NSLayoutConstraintconstraintsWithVisualFormat:@"V:[button(30)]-20-[redview]"options:0metrics:nilviews:NSDictionaryOfVariableBindings(redview,button)];
[self.view addConstraints:h_constrainsButton];
[self.view addConstraints:v_constrainsButton];
}
- (void)didReceiveMemoryWarning
{
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)didClickAnimation:(id)sender
{
//获取要承载动画的视图
UIView *redView = [self.view viewWithTag:1001];
//使用UIView类方法1
/*
[UIView animateWithDuration:2 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
CGFloat r = arc4random()%1000/1000.0f;
CGFloat g = arc4random()%1000/1000.0f;
CGFloat b = arc4random()%1000/1000.0f;
redView.backgroundColor = [UIColor colorWithRed:r green:g blue:b alpha:1];
//过度效果
redView.transform = CGAffineTransformMakeRotation(M_PI);
} completion:^(BOOL finished) {
NSLog(@"动画结束");
}];
*/
//使用UIView类方法2
/*
//开始设置动画
[UIView beginAnimations:nil context:nil];
//设置过度效果是否从前状态开始启动,否则为当前视图的最终状态开始启动
[UIView setAnimationBeginsFromCurrentState:YES];
//设置过度效果的进度,慢入慢出,慢入,慢出,线性4种
[UIView setAnimationCurve:(UIViewAnimationCurveEaseInOut)];
//设置过渡效果是否延迟
[UIView setAnimationDelay:0];
//设置过度效果的过度时间
[UIView setAnimationDuration:1.0f];
//设置过度效果是否自动恢复
[UIView setAnimationRepeatAutoreverses:YES];
//设置过度效果是否重复出现
[UIView setAnimationRepeatCount:1.5f];
[UIView setAnimationDelegate:self];
[UIView setAnimationWillStartSelector:@selector(animationStart)];
[UIView setAnimationDidStopSelector:@selector(animationEnd)];
CGFloat x = arc4random() % 100+100;
CGFloat y = arc4random() % 100+200;
redView.center = CGPointMake(x, y);
// [sender layoutIfNeeded];
//提交过度动画效果
[UIView commitAnimations];
*/
//使用QuartzCoree框架内的对象3
//实例化过度对象
CATransition *animation = [CATransitionanimation];
//设置过度对象的时间
animation.duration = 0.5f;
//设置过度对象的类型
animation.type = kCATransitionFade;
//设置过度对象的子类型
// animation.subtype =
[redView.layer addAnimation:animation forKey:nil];
//设置视图层次对象的透明
redView.layer.opacity = 0.2f;
/*
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"anchorPoint"];
//设置过度对象的时间间隔
animation.duration = 0.5f;
//设置过度对象的开始值
animation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0.5f,0.5f)];
animation.toValue = [NSValue valueWithCGPoint:CGPointMake(1.0f, 1.0f)];
//将过度对象添加到视图层上
[redView.layer addAnimation:animation forKey:nil];
//设置视图层的最终状态
redView.layer.anchorPoint = CGPointMake(1.0f, 1.0f);
*/
// CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
// //设置过度对象的时间间隔
// animation.duration = 1.0f;
// //设置过度对象的中间过度状态
// CGMutablePathRef path = CGPathCreateMutable();
// CGPathMoveToPoint(path, NULL, 110, 200);
// CGPathAddQuadCurveToPoint(path, NULL, 150, 250, 200, 200);
// animation.path = path;
// [redView.layer addAnimation:animation forKey:nil];
}
- (void)animationStart
{
NSLog(@"Start");
}
- (void)animationEnd
{
NSLog(@"end");
}