IOS 简单的动画自定义方法(旋转、移动、闪烁等)
来源:互联网 发布:软件标题修改器 编辑:程序博客网 时间:2024/06/14 01:35
#define kDegreesToRadian(x) (M_PI * (x) / 180.0 )
#define kRadianToDegrees(radian) (radian* 180.0 )/(M_PI)
- ( void )viewDidLoad
{
[ super viewDidLoad ];
self . title = @" 测试动画 " ;
self . view . backgroundColor = [ UIColorlightGrayColor ];
myTest1 = [[ UILabelalloc ] initWithFrame : CGRectMake ( 10 , 100 , 60 , 40 )];
myTest1 . backgroundColor = [ UIColorblueColor ];
myTest1 . textAlignment = NSTextAlignmentCenter ;
myTest1 . text = @" 张明炜 " ;
myTest1 . textColor = [ UIColorwhiteColor ];
[ self . viewaddSubview : myTest1 ];
// 闪烁效果。
// [myTest1.layer addAnimation:[self opacityForever_Animation:0.5] forKey:nil];
/// 移动的动画。
// [myTest1.layer addAnimation:[self moveX:1.0f X:[NSNumber numberWithFloat:200.0f]] forKey:nil];
// 缩放效果。
// [myTest1.layer addAnimation:[self scale:[NSNumber numberWithFloat:1.0f] orgin:[NSNumber numberWithFloat:3.0f] durTimes:2.0f Rep:MAXFLOAT] forKey:nil];
// 组合动画。
// NSArray *myArray = [NSArray arrayWithObjects:[self opacityForever_Animation:0.5],[self moveX:1.0f X:[NSNumber numberWithFloat:200.0f]],[self scale:[NSNumber numberWithFloat:1.0f] orgin:[NSNumber numberWithFloat:3.0f] durTimes:2.0f Rep:MAXFLOAT], nil];
// [myTest1.layer addAnimation:[self groupAnimation:myArray durTimes:3.0f Rep:MAXFLOAT] forKey:nil];
// 路径动画。
// CGMutablePathRef myPah = CGPathCreateMutable();
// CGPathMoveToPoint(myPah, nil,30, 77);
// CGPathAddCurveToPoint(myPah, nil, 50, 50, 60, 200, 200, 200);// 这里的是控制点。
// [myTest1.layer addAnimation:[self keyframeAnimation:myPah durTimes:5 Rep:MAXFLOAT] forKey:nil];
// 旋转动画。
[ myTest1 . layer addAnimation :[ self rotation : 2 degree : kRadianToDegrees ( 90 ) direction : 1 repeatCount : MAXFLOAT ] forKey : nil ];
}
#pragma mark === 永久闪烁的动画 ======
-( CABasicACnimation *)opacityForever_Animation:( float )time
{
CABasicAnimation *animation = [ CABasicAnimationanimationWithKeyPath : @"opacity" ]; // 必须写 opacity 才行。
animation. fromValue = [ NSNumbernumberWithFloat : 1.0f ];
animation. toValue = [ NSNumbernumberWithFloat : 0.0f ]; // 这是透明度。
animation. autoreverses = YES ;
animation. duration = time;
animation. repeatCount = MAXFLOAT ;
animation. removedOnCompletion = NO ;
animation. fillMode = kCAFillModeForwards ;
animation. timingFunction =[ CAMediaTimingFunctionfunctionWithName : kCAMediaTimingFunctionEaseIn ]; /// 没有的话是均匀的动画。
return animation;
}
#pragma mark ===== 横向、纵向移动 ===========
-( CABasicAnimation *)moveX:( float )time X:( NSNumber *)x
{
CABasicAnimation *animation = [ CABasicAnimationanimationWithKeyPath : @"transform.translation.x" ]; ///.y 的话就向下移动。
animation. toValue = x;
animation. duration = time;
animation. removedOnCompletion = NO ; //yes 的话,又返回原位置了。
animation. repeatCount = MAXFLOAT ;
animation. fillMode = kCAFillModeForwards ;
return animation;
}
#pragma mark ===== 缩放 -=============
-( CABasicAnimation *)scale:( NSNumber *)Multiple orgin:( NSNumber *)orginMultiple durTimes:( float )time Rep:( float )repertTimes
{
CABasicAnimation *animation = [ CABasicAnimationanimationWithKeyPath : @"transform.scale" ];
animation. fromValue = Multiple;
animation. toValue = orginMultiple;
animation. autoreverses = YES ;
animation. repeatCount = repertTimes;
animation. duration = time; // 不设置时候的话,有一个默认的缩放时间 .
animation. removedOnCompletion = NO ;
animation. fillMode = kCAFillModeForwards ;
return animation;
}
#pragma mark ===== 组合动画 -=============
-( CAAnimationGroup *)groupAnimation:( NSArray *)animationAry durTimes:( float )time Rep:( float )repeatTimes
{
CAAnimationGroup *animation = [ CAAnimationGroupanimation ];
animation. animations = animationAry;
animation. duration = time;
animation. removedOnCompletion = NO ;
animation. repeatCount = repeatTimes;
animation. fillMode = kCAFillModeForwards ;
return animation;
}
#pragma mark ===== 路径动画 -=============
-( CAKeyframeAnimation *)keyframeAnimation:( CGMutablePathRef )path durTimes:( float )time Rep:( float )repeatTimes
{
CAKeyframeAnimation *animation = [ CAKeyframeAnimationanimationWithKeyPath : @"position" ];
animation. path = path;
animation. removedOnCompletion = NO ;
animation. fillMode = kCAFillModeForwards ;
animation. timingFunction = [ CAMediaTimingFunctionfunctionWithName : kCAMediaTimingFunctionEaseIn ];
animation. autoreverses = NO ;
animation. duration = time;
animation. repeatCount = repeatTimes;
return animation;
}
#pragma mark ==== 旋转动画 ======
-( CABasicAnimation *)rotation:( float )dur degree:( float )degree direction:( int )direction repeatCount:( int )repeatCount
{
CATransform3D rotationTransform = CATransform3DMakeRotation (degree, 0 , 0 , direction);
CABasicAnimation *animation = [ CABasicAnimationanimationWithKeyPath : @"transform" ];
animation. toValue = [ NSValue valueWithCATransform3D :rotationTransform];
animation. duration = dur;
animation. autoreverses = NO ;
animation. cumulative = NO ;
animation. fillMode = kCAFillModeForwards ;
animation. repeatCount = repeatCount;
animation. delegate = self ;
return animation;
}
- IOS 简单的动画自定义方法(旋转、移动、闪烁等)
- IOS 简单的动画自定义方法(旋转、移动、闪烁等)
- IOS 简单的动画自定义方法(旋转、移动、闪烁等)
- IOS 基本动画(旋转、移动、闪烁、缩放等)
- iOS简单动画效果:闪烁、移动、旋转、路径、组合、
- ios 旋转缩放等动画
- 移动端上传照片 预览(解决iOS等设备照片旋转90度的bug)
- 自定义viewpager的切换动画(旋转动画)
- 自定义ProgressBar的旋转动画
- iOS做旋转动画的几种方法
- 我的博客--群星闪烁地球旋转动画特效
- 一个简单的旋转动画
- 旋转动画的简单使用
- android 简单的旋转动画
- HTML5 - 用CSS3动画制作场景切换效果(移动,旋转,淡入淡出等)
- iphone-Cocos2d:精灵实现缩放,旋转,跳动,移动等动画
- IOS中动画的实现:以及视图的移动、缩放和旋转
- IOS中动画的实现:以及视图的移动、缩放和旋转
- 命令行创建第一个react-navite程序
- Broker模式
- 18:实现删除字符串中出现次数最少的字符
- 面向对象程序设计上机练习十(运算符重载)
- 点击输入框,下拉弹框,点击页面的其他部分,弹框消失
- IOS 简单的动画自定义方法(旋转、移动、闪烁等)
- 缩放图片的两种方法
- MTK Phone 主动呼叫流程分析(一)
- 分分钟实现pdf转换成jpg格式
- [LeetCode] 200. Number of Islands
- 设置状态栏的背景颜色和字体颜色
- iOS10 权限崩溃问题
- openCV 图像绕中心旋转
- iOS 10 的适配问题总结