ios动画效果全解

IOS中自带动画效果:三种实现方式。

第一种实现方式是在ios3.0之前的版本使用的:

[UIView beginAnimations:nil context:nil];//开始动画
[UIView setAnimationDuration:2.0f];//动画时间
[UIView setAnimationDelegate:self];//设置代理
//这里写你的动画效果

[UIView commitAnimations];//关闭动画

使用UIView的Transform属性来实现动画;
主要有三个方法:
CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty)(平移:设置平移量)
CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)(缩放:设置缩放比例)
CGAffineTransformMakeRotation(CGFloat angle)(旋转:设置旋转角度)
在结束之后可以还原

view.transform = CGAffineTransformIdentity;

第二种方法是在ios4.0之后提供的方法:

[UIView animateWithDuration:2.0//动画时常
                 animations:^{//你需要的动画
}];

或者你需要完成后执行一段代码

[UIView animateWithDuration:2.0
                 animations:^{
//你需要的动画
}                completion:^(BOOL finished) {
动画完成后执行
}];

或者你需要动画开始前有一段延迟,或自己设定动画效果

[UIView animateWithDuration:2.0
                      delay:2.0//动画延迟执行
                    options:UIViewAnimationOptionCurveEaseInOut//动画效果
                 animations:^{

}]

或者你需要动画带有类似弹簧的效果

[UIView animateWithDuration:4.0 // 动画时长
                      delay:0.0 // 动画延迟
     usingSpringWithDamping:1.0 // 类似弹簧振动效果 0~1
      initialSpringVelocity:5.0 // 初始速度
                    options:UIViewAnimationOptionCurveEaseInOut // 动画过渡效果
                 animations:^{
           // code...

               } completion:^(BOOL finished) {
           // 动画完成后执行
           // code...
         }];

usingSpringWithDamping是弹簧效果。数值范围为0~1,数值越小弹簧效果越明显。

第三种实现方法是关键帧动画

创建关键帧方法:

/**
 *  添加关键帧方法
 *
 *  @param duration   动画时长
 *  @param delay      动画延迟
 *  @param options    动画效果选项
 *  @param animations 动画执行代码
 *  @param completion 动画结束执行代码
 */
+ (void)animateKeyframesWithDuration:(NSTimeInterval)duration
                               delay:(NSTimeInterval)delay
                             options:(UIViewKeyframeAnimationOptions)options
                          animations:(void (^)(void))animations
                          completion:(void (^)(BOOL finished))completion;

添加关键帧:

/**
 *  添加关键帧
 *
 *  @param frameStartTime 动画相对开始时间
 *  @param frameDuration  动画相对持续时间
 *  @param animations     动画执行代码
 */
+ (void)addKeyframeWithRelativeStartTime:(double)frameStartTime
                        relativeDuration:(double)frameDuration
                              animations:(void (^)(void))animations;

以上说的相对时间,也就是说:“它们自身会根据动画总持续时长自动匹配其运行时长”
使用方法:

void (^keyFrameBlock)() = ^(){
    // 创建颜色数组
    NSArray *arrayColors = @[[UIColor orangeColor],
      [UIColor yellowColor],
      [UIColor greenColor],
      [UIColor blueColor],
      [UIColor purpleColor],
      [UIColor redColor]];
    NSUInteger colorCount = [arrayColors count];
    // 循环添加关键帧
    for (NSUInteger i = 0; i < colorCount; i++) {
        [UIView addKeyframeWithRelativeStartTime:i / (CGFloat)colorCount
         relativeDuration:1 / (CGFloat)colorCount
               animations:^{
                   [_graduallyView setBackgroundColor:arrayColors[i]];
               }];
    }
};
[UIView animateKeyframesWithDuration:4.0
        delay:0.0
      options:UIViewKeyframeAnimationOptionCalculationModeCubic | UIViewAnimationOptionCurveLinear
   animations:keyFrameBlock
   completion:^(BOOL finished) {
       // 动画完成后执行
       // code...
   }];

本文参考:http://www.tuicool.com/articles/BjMrQne

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目录 ** UIView 动画 ** ** Core Animation ** ** FaceBook POP动画...
    方向_4d0d阅读 1,666评论 0 3
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,578评论 6 30
  • Core Animation Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,...
    45b645c5912e阅读 3,072评论 0 21
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,147评论 5 13
  • 作者 姜苏 12 大嫂看出小裴的犹豫了,站在原地也略犹豫了一下,随后说:“等一下小裴吧,”他是在和松井说,也是和小...
    姜苏阅读 217评论 0 0