iOS开发总结之CABasicAnimation
2016-04-30 10:36
633 查看
1.创建图层
#import "ViewController.h" @interface ViewController () @property(strong,nonatomic) CALayer *layer; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; CALayer *layer = [CALayer layer]; layer.position = CGPointMake(100, 100); layer.bounds = CGRectMake(0, 0, 100, 100); layer.backgroundColor = [UIColor redColor].CGColor; [self.view.layer addSublayer:layer]; self.layer = layer; }
2.demo示例
demo示例1.
- (void)testTransform { // 1.创建动画对象 // CABasicAnimation *anim = [CABasicAnimation animation]; // // 2.设置动画对象 // // keyPath决定了执行怎样的动画, 调整哪个属性来执行动画 // // anim.keyPath = @"transform.rotation"; // // anim.keyPath = @"transform.scale.x"; // anim.keyPath = @"transform.translation.x"; CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"]; anim.toValue = @(200); // anim.toValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)]; anim.duration = 2.0; //动画时间 /**让图层保持动画执行完毕后的状态**/ // 动画执行完毕后不要删除动画 这个要和下面的fillMode结合使用 需要将其removedOnCompletion设置为NO,要不然fillMode不起作用 anim.removedOnCompletion = NO; // 保持最新的状态 anim.fillMode = kCAFillModeForwards; //当动画结束后,layer会一直保持着动画最后的状态 // 3.添加动画 [self.layer addAnimation:anim forKey:nil]; }
效果:
动画开始前:
动画结束后:
demo示例2:
- (void)testRotate { // 1.创建动画对象 // CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:<#(nullable NSString *)#> CABasicAnimation *anim = [CABasicAnimation animation]; // 2.设置动画对象 // keyPath决定了执行怎样的动画, 调整哪个属性来执行动画 anim.keyPath = @"transform"; // anim.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, 0)]; anim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI/3, 1, -1, 0)]; anim.duration = 2.0; anim.removedOnCompletion = NO; //需要将其removedOnCompletion设置为NO,要不然fillMode不起作用 anim.fillMode = kCAFillModeForwards; //当动画结束后,layer会一直保持着动画最后的状态 // 3.添加动画 [self.layer addAnimation:anim forKey:nil]; }效果:
动画开始前:
动画结束后:
demo示例3:
- (void)testScale { // 1.创建动画对象 // CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:<#(nullable NSString *)#> CABasicAnimation *anim = [CABasicAnimation animation]; // 2.设置动画对象 // keyPath决定了执行怎样的动画, 调整哪个属性来执行动画 anim.keyPath = @"bounds"; // anim.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, 0)]; anim.toValue = [NSValue valueWithCGRect:CGRectMake(0, 0, 200, 200)]; anim.duration = 2.0; /**让图层保持动画执行完毕后的状态**/ // 动画执行完毕后不要删除动画 这个要和下面的fillMode结合使用 需要将其removedOnCompletion设置为NO,要不然fillMode不起作用 anim.removedOnCompletion = NO; // 保持最新的状态 anim.fillMode = kCAFillModeForwards; //当动画结束后,layer会一直保持着动画最后的状态 // 3.添加动画 [self.layer addAnimation:anim forKey:nil]; }
动画开始前:
动画结束后:
相关文章推荐
- iOS程序猿之AFNetworking 3.0 版本使用
- iOS - 生成二维码
- iOS开发笔记--Runtime那点事
- iOS之contentmode
- 玩玩Xamarin Evolve 2016带来的新特性(一)-iOS Simulator(for Windows)
- ios - 自动布局框架编写(更多功能完善中)
- iOS开发 - CocoaPods安装和使用教程
- 懒惰的 initialize 方法
- 玩玩Xamarin Evolve 2016带来的新特性(一)-iOS Simulator(for Windows)
- IOS几种定时器
- 视频播放 iOS8.0 与iOS 9.0
- iOS开发之旋转动画及GIF格式图片的播放
- ARC下可能的内存泄露
- iOS:导航条滚动透明度随着tableView的滚动而变化
- iOS Masonry 纯代码布局 AutoLayout
- iOS: 环信的推送
- iOS开发过程中的各种tips
- iOS开发中 实现登录时关于使用QQ做为第三方授权登录的问题
- iOS开发总结之 NSString和NSMutableString
- IOS推送PEM生成