IOS 动画(Animation)

本文详细介绍了iOS开发中使用UIImage动画与NSTimer构建动画的方法,并深入探讨了UIView动画的制作步骤及高级动画选项,包括曲线动画效果、允许用户交互、动画重复与反向播放等特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.  UIImage动画

最基本的动画

使用UIImage对象快速切换图片形成动画效果

    适合做一些小的动画方面

   [UIImage animatedImageNamed:@"一连续的图片名(image)"duration:0.2];如:image1.png image2.png....

2.NSTimer类构建动画

   2.1 NSTimer类


是一个计时器类,用于定时的向指定对象发送指定消息

[NSTimer scheduledTimerWithTimeInterval:参数1 target:参数2 selector:参数3 userInfo:nil repeats:参数4];

   参数1:响应的时间间隔  参数2:设置目标对象,一般指(self) 参数3:调用响应的事件  参数4:回答是否重复调用NSTimer 

 对象创建好之后马上开始计时。

       NSTimer*timer=[[NSTimer alloc]initWithFireDate:(NSDate *) interval:(NSTimeInterval) target:(id) selector:(SEL) userInfo:(id) repeats:(BOOL)];

                 对象创建好后,需要fire(开始)的时间。


      2.2  匀速动画


          当前值 = 开始值 + 当前的帧数 * (结束值 - 开始值) / (帧率*动画时长)

static NSUInteger times=0;

self.imageView.alpha = 0 + self.times * (1 - 0) / (FPS * DURATION);一个图片视图透明度从0-1的一个云变过程。

    times++;


      2.3  变速动画

当前值 = 上一次值 + (目标值 - 上一次值) * 渐进因子

       261 =  300 + (-90 - 300) * 0.1

       225 =  261 + (-90 - 261) * 0.1  

       193 =  225 + (-90 - 225) * 0.1


CGPoint center = self.imageView.center;

    center.y = center.y + (self.imageView.frame.size.height - center.y) * 0.1;

    self.imageView.center = center;

逐渐减速的 改变一个图片视图的y轴位置

3. UIView动画

     3.1 是什么

是UIKit提供的专门制作动画的API, 本质上是对更底层的CoreAnimation的封装。

可以轻松的制作动画

    3.2 制作动画的步骤:

1> 设置需要动画的视图的初始属性

2> 给UIView类发消息,告诉UIView需要什么动画

3> 将动画结束后的状态(属性值)写入到Block中

3.3 高级动画

1> options:

UIViewAnimationOptionCurveEaseInOut //先变快后变慢 

    UIViewAnimationOptionCurveEaseIn  //越来越快

    UIViewAnimationOptionCurveEaseOut //越来越慢

UIViewAnimationOptionCurveLinear  //匀速

//动画的同时允许用户交互

UIViewAnimationOptionAllowUserInteraction

    //动画从当前状态开始,否则从初始状态开始

UIViewAnimationOptionBeginFromCurrentState

//动画重复

UIViewAnimationOptionRepeat

//动画在重复的基础上,是否需要反向动画

UIViewAnimationOptionAutoreverse

如:一个图片视图从下往上动画例子

    CGPoint center = self.aircraftImageView.center;

    center.y -= 360;//动画结束时动画视图Y轴所再的位置

    CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI);// 添加旋转变形

    [UIView animateWithDuration:2.0 //动画时长

                          delay:0 //加载视图到动画开始的时间

                        options//添加动画

     UIViewAnimationOptionCurveEaseInOut |

     UIViewAnimationOptionRepeat |

     UIViewAnimationOptionAutoreverse

                     animations:^{  //不断的修改变形 位置 来达到动画的效果

        self.aircraftImageView.transform = transform;

        self.aircraftImageView.center = center;

     } completion:^(BOOL finished) {

         //动画结束后会执行的代码

     }];





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值