美文网首页
ios动画效果全解

ios动画效果全解

作者: 呜啦啦啦拉拉 | 来源:发表于2016-08-20 18:37 被阅读98次

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

相关文章

网友评论

      本文标题:ios动画效果全解

      本文链接:https://www.haomeiwen.com/subject/kxjisttx.html