UI动图的制作
来源:互联网 发布:怎么看网络测试仪 编辑:程序博客网 时间:2024/04/28 05:05
创建一个协议文件,把screen的width,height用宏定义
ifndef UI_05_02_PrefixHeader_pch
define UI_05_02_PrefixHeader_pch
define Screen_Width [[UIScreen mainScreen] bounds].size.width
define Screen_Height [[UIScreen mainScreen] bounds].size.height
endif
接着在ViewController.m文件中的interface.h声明如下对象的属性
import “ViewController.h”
@interface ViewController ()
{
UIView *animationView;
UIView *layerView;int CATransactionCount;UIView *keyframeView;CALayer *CATransactionLayer;
}
@end
然后初始化animationView对象
@implementation ViewController
(void)viewDidLoad {
[super viewDidLoad];
animationView = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 80, 80)];
animationView.backgroundColor = [UIColor redColor];
[self.view addSubview:animationView];//layer那点事,layer相当于图片的图层
// CALayer *layer1 = [CALayer layer];
// layer1.frame = CGRectMake(0, 0, 40, 40);
// layer1.backgroundColor = [UIColor yellowColor].CGColor;
// [animationView.layer addSublayer:layer1];
// 接着初始化layerView
//让layer本身做动画
layerView = [[UIView alloc] initWithFrame:CGRectMake(Screen_Width/2-100, Screen_Height/2-100, 200, 200)];
[self.view addSubview:layerView];
//导入图片”1”
UIImage *image = [UIImage imageNamed:@"1"];layerView.layer.contents = (__bridge id)(image.CGImage);layerView.layer.contentsGravity = kCAGravityResizeAspect;layerView.layer.contentsScale = image.scale;CATransactionCount = 0;//关于核心动画编程,就是给layer的属性做动画//设置三个按钮UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];[button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];[button setTitle:@"做动画" forState:0];button.frame = CGRectMake(Screen_Width-80, 20, 60, 30);[self.view addSubview:button];button = [UIButton buttonWithType:UIButtonTypeSystem];[button addTarget:self action:@selector(CATransactionbuttonAction:) forControlEvents:UIControlEventTouchUpInside];[button setTitle:@"做动画" forState:0];button.frame = CGRectMake(Screen_Width-80, 80, 60, 30);[self.view addSubview:button];button = [UIButton buttonWithType:UIButtonTypeSystem];[button addTarget:self action:@selector(keyframeAnimation:) forControlEvents:UIControlEventTouchUpInside];[button setTitle:@"做动画" forState:0];button.frame = CGRectMake(Screen_Width-80, 130, 60, 30);[self.view addSubview:button];
//初始化keyframeView,不过后面那个调用是什么意思?
keyframeView = [[UIView alloc] initWithFrame:CGRectMake(100, 120, 60, 30)];
keyframeView.backgroundColor = [UIColor clearColor];
keyframeView.layer.borderColor = [UIColor grayColor].CGColor;
keyframeView.layer.borderWidth = 1.0;
[self.view insertSubview:keyframeView aboveSubview:button];
//创建一个按钮,关联的方法为CATransactionLayerAnimation
button = [UIButton buttonWithType:UIButtonTypeSystem];
[button addTarget:self action:@selector(CATransactionLayerAnimation:) forControlEvents:UIControlEventTouchUpInside];
[button setTitle:@”做动画” forState:0];
button.frame = CGRectMake(Screen_Width-80, 180, 60, 30);
[self.view addSubview:button];
//初始化CATransactionLayer
CATransactionLayer = [CALayer layer];
CATransactionLayer.frame = CGRectMake(100, 100, 50, 50);
CATransactionLayer.backgroundColor = [UIColor yellowColor].CGColor;
[self.view.layer addSublayer:CATransactionLayer];
}
//下面是按钮方法的实现
-(void)buttonAction:(UIButton *)sender{
/*
// CABasicAnimation* fadeAnim = [CABasicAnimation animationWithKeyPath:@”opacity”];
// fadeAnim.fromValue = [NSNumber numberWithFloat:1.0];
// fadeAnim.toValue = [NSNumber numberWithFloat:0.0];
// fadeAnim.duration = 1.0;
// [animationView.layer addAnimation:fadeAnim forKey:@”opacity”];
CGMutablePathRef thePath = CGPathCreateMutable();CGPathMoveToPoint(thePath,NULL,74.0,74.0);CGPathAddCurveToPoint(thePath,NULL,74.0,500.0, 320.0,500.0, 320.0,74.0);CGPathAddCurveToPoint(thePath,NULL,320.0,500.0, 566.0,500.0, 566.0,74.0);CAKeyframeAnimation * theAnimation;// Create the animation object, specifying the position property as the key path.theAnimation=[CAKeyframeAnimation animationWithKeyPath:@"position"];theAnimation.path=thePath;theAnimation.duration=5.0;// Add the animation to the layer.[animationView.layer addAnimation:theAnimation forKey:@"position"]; *//* transform transform.rotation transform.translation transform.scale *///旋转/*CABasicAnimation *rotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];rotation.fromValue = @0;rotation.toValue = @(M_PI/2);rotation.duration = 1.f;rotation.repeatCount = FLT_MAX;rotation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];[animationView.layer addAnimation:rotation forKey:@"vincent"];*/
CABasicAnimation *xRotation = [CABasicAnimation animationWithKeyPath:@”transform”];
xRotation.fromValue = [NSValue valueWithCATransform3D:CATransform3DIdentity];
xRotation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 1, 1, 1)];
xRotation.duration = 1.f;
xRotation.repeatCount = FLT_MAX;
xRotation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
[animationView.layer addAnimation:xRotation forKey:@”vincent”];}
//改变大白的形态
-(void)CATransactionbuttonAction:(UIButton *)sender{
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(changeDabai:) userInfo:nil repeats:YES];}
//实现大白跳的速度的改变
-(void)changeDabai:(NSTimer *)sender{
UIImage *image = [UIImage imageNamed:@”1”];
CGRect rect = CGRectZero;
if (CATransactionCount > 5) {
CATransactionCount = 0;
}
switch (CATransactionCount) {
case 0:
{
rect = CGRectMake(0, 0, 1, 0.75);
}
break;
case 1:
{
rect = CGRectMake(0, 0, 1, 0.5);
}
break;
case 2:
{
rect = CGRectMake(0, 0.25, 1, 0.5);
}
break;
case 3:
{
rect = CGRectMake(0, 0.25, 1, 0.5);
}
break;
case 4:
{
rect = CGRectMake(0, 0.5, 1, 1);
}
break;
case 5:
{
rect = CGRectMake(0, 0.25, 1, 1);
}
break;
default: break;}CATransactionCount++;layerView.layer.contents = (__bridge id)image.CGImage;layerView.layer.contentsCenter = rect;
}
-(void)keyframeAnimation:(UIButton *)sender{
CAKeyframeAnimation *keyAnimation = [CAKeyframeAnimation animationWithKeyPath:@”transform.scale.y”];
keyAnimation.values = @[@0,@-10,@10,@-10,@0];
// keyAnimation.path
keyAnimation.duration = 0.4;
keyAnimation.additive = YES;
[keyframeView.layer addAnimation:keyAnimation forKey:@”shake”];
}
-(void)CATransactionLayerAnimation:(UIButton *)sender{
[CATransaction begin];
//设置动画时间
[CATransaction setValue:@1.0f forKey:kCATransactionAnimationDuration];
//改变layer位置
CGFloat pointY = CATransactionLayer.position.y> 250 ? 125:425;
CATransactionLayer.position = CGPointMake(CATransactionLayer.position.x, pointY);
[CATransaction commit];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
效果如图
- UI动图的制作
- 制作Gif动图
- LaTeX制作动图效果
- 使用Matplotlib制作动图
- 录屏并制作动图gif的方法
- 简单的ui制作
- 紧凑UI的制作
- UI的基本动效--1
- 制作我的动网论坛
- 制作我的动网论坛
- H5动效的常见制作手法
- 制作更生动的演示文档
- 有关动/静态库的制作
- H5动效的常见制作手法
- H5动效的常见制作手法
- H5动效的常见制作手法
- 动静态库的制作与调用
- 如何用ps制作GIF动图
- 西方人眼中的中国的不同:文明国家、民族的概念 和 国家的属性以及它和社会的关系
- Ubuntu14.04安装后vim不可用的问题
- 网页前端的相关技术整理
- 线程之间的通信-(子线程获得主线程的方式)
- Andorid——自定义Dialog
- UI动图的制作
- c与c++的区别
- linux之nohup命令
- Andorid——自定义Dialog
- Scala学习第二天 Scala函数定义、流程控制、异常处理
- Android中的Notification
- I/O流学习笔记
- java.lang.NoSuchFieldException: mThumbDrawable
- 解决Linux中文乱码