1 // 2 // ViewController.m 3 // CAAnimationAndViewAnimation 4 // 5 // Created by ys on 15/11/22. 6 // Copyright (c) 2015年 ys. All rights reserved. 7 // 8 9 #import "ViewController.h" 10 11 @interface ViewController () 12 @property (weak, nonatomic) IBOutlet UIView *blackView; 13 14 @end 15 16 @implementation ViewController 17 18 - (void)viewDidLoad { 19 [super viewDidLoad]; 20 } 21 22 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 23 { 24 // [self diyCACoreAnimation]; 25 // [self viewAnimation1]; 26 // [self viewAnimation2]; 27 [self viewAnimation3]; 28 29 } 30 /** 31 * 核心动画的问题在于 1.其直接操作layer层,和view层比不够面向对象. 32 * 2.layer的属性均没有改变.图层动画都是假象, 在动画执行过程中, 图层的position属性一直都没有变过 33 * 因此在实际开发中,除非某些效果难以达到,一般都是使用view实现动画 34 */ 35 -(void)diyCACoreAnimation 36 { 37 CABasicAnimation *anim = [CABasicAnimation animation]; 38 anim.keyPath = @"position"; 39 anim.toValue = [NSValue valueWithCGPoint:CGPointMake(200, 200)]; 40 anim.duration = 0.5; 41 anim.removedOnCompletion = NO; 42 anim.fillMode = kCAFillModeForwards; 43 anim.delegate = self; 44 [self.blackView.layer addAnimation:anim forKey:nil]; 45 46 } 47 48 -(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag 49 { 50 //diyCACoreAnimation动画结束后打印一下发现图层的position属性一直都没有变过 51 NSLog(@"%@",NSStringFromCGPoint(self.blackView.layer.position)); 52 } 53 54 -(void)viewAnimation1 55 { 56 [UIView beginAnimations:nil context:nil]; 57 self.blackView.center = CGPointMake(200, 200); 58 [UIView commitAnimations]; 59 NSLog(@"%@",NSStringFromCGPoint(self.blackView.center)); 60 } 61 62 -(void)viewAnimation2 63 { 64 [UIView animateWithDuration:1.0 animations:^{ 65 self.blackView.center = CGPointMake(200, 200); 66 } completion:^(BOOL finished) { 67 NSLog(@"%@",NSStringFromCGPoint(self.blackView.center)); 68 }]; 69 } 70 71 -(void)viewAnimation3 72 { 73 [UIView transitionWithView:self.blackView duration:10 options:UIViewAnimationOptionTransitionFlipFromRight animations:^{ 74 } completion:^(BOOL finished) { 75 }]; 76 } 77 @end
时间: 2024-11-03 22:02:19