`
zjjzmw1
  • 浏览: 1367701 次
  • 性别: Icon_minigender_1
  • 来自: 开封
社区版块
存档分类
最新评论

IOS 简单的动画自定义方法(旋转、移动、闪烁等)

    博客分类:
  • iOS
阅读更多

#define kDegreesToRadian(x) (M_PI * (x) / 180.0)

 

#define kRadianToDegrees(radian) (radian*180.0)/(M_PI)

 

- (void)viewDidLoad

{

    [superviewDidLoad];

    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.layeraddAnimation:[selfrotation:2degree:kRadianToDegrees(90) direction:1repeatCount: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;

 

}

1
0
分享到:
评论
1 楼 cxiaosi 2014-09-26  
好的 谢谢 ,收藏

相关推荐

    ios-IOS 简单的动画自定义方法(旋转、移动、闪烁等).zip

    在iOS中,我们可以使用`UIView`类提供的动画方法来创建简单的动画。这些方法基于Core Animation,但对开发者来说更加直观和易于使用。以下是一些关键的概念: 1. **CAAnimation**:这是Core Animation层的核心类,...

    ios-动画.zip

    总之,"ios-动画.zip"的示例可能涵盖了iOS开发中创建简单自定义动画的基本方法,包括旋转、移动和闪烁效果。通过理解这些基本概念并结合实践,开发者可以创造出丰富多彩的动画效果,提升应用程序的用户体验。

    iOS动画梦幻星空

    "iOS动画梦幻星空"是一个项目,旨在模仿音乐应用《唱吧》启动时的星空闪烁效果。这个效果通过使用Core Animation框架中的CAEmitterLayer实现,为用户带来视觉上的梦幻感受,星星闪烁如同夜空中繁星点点,营造出一种...

    ios-二维码扫描动画.zip

    在iOS开发中,二维码扫描是一项常见的功能,广泛应用于各种应用程序,如社交、支付、信息获取等。本项目“ios-二维码扫描动画.zip”显然聚焦于实现一个具备二维码扫描能力的应用,并且加入了模仿微信扫描动画的效果...

    核心动画-基本动画、动画组

    在“Animation_Demo”这个项目中,通过实践这些技术,开发者成功地创建了一个自定义的基本动画和一个包含多个动画的组,同时避免了动画结束时的闪烁问题,从而提供了更加平滑且自然的用户体验。学习并掌握这些内容...

    ios-Animation.zip

    本篇文章将围绕"ios-Animation.zip"这一资源包,深入探讨iOS平台上的3D动画、绘画动画、文字特效、碎片效果、折叠动画、图层呈现、粒子效果以及动画的暂停与恢复等关键知识点,同时结合开源项目...

    AmazeUI CSS动画

    在AmazeUI中,CSS动画不仅包括基本的过渡效果,还涵盖了一系列复杂的动画效果,如旋转、缩放、滑动等。 在实际应用中,AmazeUI的CSS动画主要通过以下几方面来提升用户体验: 1. **过渡效果**:过渡效果是元素状态...

    状态栏动画

    通过这些API,开发者可以控制状态栏元素的移动、缩放、旋转等动画。 6. **Notification Animation**: 在状态栏中显示的通知也可以包含动画,例如,当新消息到来时,通知图标可能会闪烁或滑入屏幕。这需要对`...

    【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-组合动作

    动作可以控制物体的位置、旋转、缩放、颜色变化甚至更复杂的行为,例如动画序列。通过动作,开发者可以轻松地让游戏元素执行各种动态效果。 1. **基本动作(Basic Actions)** - `MoveTo`: 使物体移动到指定位置。...

    粒子系统Demo

    在iOS开发中,粒子系统(Particle System)是一种用于创建复杂视觉效果的技术,广泛应用于游戏、动画和用户界面设计。CAEmitterLayer是Core Animation框架的一部分,它允许开发者在iOS应用中轻松实现粒子效果。本...

    demo.rar_CE_DEMO_Windows CE_iPhone界面

    为了实现更复杂的动画效果,如页面的淡入淡出、旋转等,可以使用定时器(Timer)和双缓冲技术。定时器负责控制动画的帧率,而双缓冲可以避免屏幕闪烁,提供更流畅的视觉体验。例如,通过改变控件的位置或透明度,...

    动态图片制作软件(很精致哦)

    4. **动态字体**:动态字体是指文字具有动画效果,如闪烁、旋转、缩放等。这些效果可以通过调整字体的透明度、位置、大小或颜色实现。动态字体可以增强信息的视觉吸引力,使得文字不仅传达信息,还成为视觉焦点。 5...

    水果忍者完整源码-刀光特效全有

    【水果忍者完整源码-刀光特效全有】是一个针对移动平台,特别是Android和iOS设备的游戏源码项目。这个游戏的特色在于其丰富的刀光特效,这是吸引玩家的重要元素之一。下面将详细介绍这个项目的相关知识点。 一、C++...

    Qt漂亮的等待显示控件

    1. **动画效果**:等待控件可能会使用旋转、缩放、闪烁等动画效果来吸引用户的注意力,同时传达“正在处理”的信息。 2. **自定义样式**:根据描述,该控件应该有漂亮的外观,这意味着开发者可能可以自定义其颜色、...

    World Map Globe Edition 2 V14.5

    -有两种可用的相机模式:在旋转地球的位置之间导航(相机不移动)或使相机绕地球旋转。 -缩放倾斜选项:放大/缩小时实现角度透视。 -从当前位置找到并顺利飞往任何国家、州、市。还可以通过经纬度轻松定位任何世界...

    计算机图形学的底层原代码

    - **OpenGL ES**:移动设备上的图形API,适用于Android和iOS平台。 3. **图形管线**: - **固定功能管线**:早期图形硬件中的预定义处理流程。 - **可编程管线**:现代图形硬件允许程序员自定义顶点着色器、几何...

    cocos2d粒子设计器

    对于iOS和Android平台,cocos2d粒子设计器同样适用,这意味着开发者可以在两种主流移动平台上轻松创建一致的视觉体验。粒子系统的跨平台性使得游戏在多平台发布时保持一致的高质量特效。 总的来说,cocos2d粒子设计...

    android开发资料大全

    包含资源名称下载地址 Android 开发从入门到精通 新版Android开发教程及笔记-完整版 《Android中文教程》中文版 《android基础教程合集》 Android实例教程 会员贡献...介绍ios及android平台app应用的推广方法与渠道

Global site tag (gtag.js) - Google Analytics