IOS 几种简单常用动画

来源:互联网 发布:组态王软件价格 编辑:程序博客网 时间:2024/06/16 13:46
使用前
 
        需引入QuartzCore.framework, 并在相关文件中加入 #import "QuartzCore/QuartzCore.h"
 
定义
 
         shakeFeedbackOverlay为UIImageView
 
设置
 
         self.shakeFeedbackOverlay.alpha= 0.0;
 
         self.shakeFeedbackOverlay.layer.cornerRadius= 10.0;//设置圆角半径
 
1、图像左右抖动
 
    CABasicAnimation* shake = [CABasicAnimationanimationWithKeyPath:@"transform.rotation.z"];
 
    shake.fromValue= [NSNumbernumberWithFloat:-M_PI/32];
 
    shake.toValue= [NSNumbernumberWithFloat:+M_PI/32];
 
    shake.duration= 0.1;
 
    shake.autoreverses= YES;//是否重复
 
    shake.repeatCount= 4;
 
    [self.shakeFeedbackOverlay.layeraddAnimation:shakeforKey:@"shakeAnimation"];
 
    self.shakeFeedbackOverlay.alpha= 1.0;
 
    [UIViewanimateWithDuration:2.0delay:0.0options:UIViewAnimationOptionCurveEaseIn| UIViewAnimationOptionAllowUserInteractionanimations:^{self.shakeFeedbackOverlay.alpha= 0.0;//透明度变0则消失 } completion:nil];
 
2、图像顺时针旋转
 
    CABasicAnimation* shake = [CABasicAnimationanimationWithKeyPath:@"transform.rotation.z"];
 
    shake.fromValue= [NSNumbernumberWithFloat:0];
 
    shake.toValue= [NSNumbernumberWithFloat:2*M_PI];
 
    shake.duration= 0.8; shake.autoreverses= NO;
 
    shake.repeatCount= 1;
 
    [self.shakeFeedbackOverlay.layeraddAnimation:shakeforKey:@"shakeAnimation"];
 
    self.shakeFeedbackOverlay.alpha= 1.0;
 
    [UIViewanimateWithDuration:10.0delay:0.0options:UIViewAnimationOptionCurveEaseIn| UIViewAnimationOptionAllowUserInteractionanimations:^{self.shakeFeedbackOverlay.alpha= 0.0; } completion:nil];
 
3、图像关键帧动画
 
    CAKeyframeAnimation*animation = [CAKeyframeAnimationanimation];
 
    CGMutablePathRefaPath = CGPathCreateMutable();
 
    CGPathMoveToPoint(aPath,nil,20,20);
 
    CGPathAddCurveToPoint(aPath,nil,160,30,220,220,240,420);
 
    animation.path= aPath;
 
    animation.autoreverses= YES;
 
    animation.duration= 2;
 
    animation.timingFunction= [CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut];
 
    animation.rotationMode= @"auto";
 
    [ballView.layeraddAnimation:animationforKey:@"position"];
 
4、组合动画CAAnimationGroup
 
    CABasicAnimation*flip = [CABasicAnimationanimationWithKeyPath:@"transform.rotation.y"];
 
    flip.toValue= [NSNumbernumberWithDouble:-M_PI];
 
     
 
    CABasicAnimation*scale= [CABasicAnimationanimationWithKeyPath:@"transform.scale"];
 
    scale.toValue= [NSNumbernumberWithDouble:12];
 
    scale.duration= 1.5;
 
    scale.autoreverses= YES;
 
     
 
    CAAnimationGroup*group = [CAAnimationGroupanimation];
 
    group.animations= [NSArrayarrayWithObjects:flip, scale, nil];
 
    group.timingFunction= [CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut];
 
    group.duration= 3;
 
    group.fillMode= kCAFillModeForwards;
 
    group.removedOnCompletion= NO;
 
    [ballView.layeraddAnimation:groupforKey:@"position"];
 
5、指定时间内旋转图片
 
//启动定时器旋转光圈
 
- (void)startRotate
 
{
 
    self.rotateTimer= [NSTimerscheduledTimerWithTimeInterval:0.02
 
                                                 target:self
 
                                               selector:@selector(rotateGraduation)
 
                                               userInfo:nil
 
                                                repeats:YES];
 
}
 
//关闭定时器
 
- (void)stopTimer
 
{
 
    if([self.rotateTimerisValid])
 
{
 
        [self.rotateTimerinvalidate];
 
        self.rotateTimer= nil;
 
    }
 
}
 
  
 
//旋转动画
 
- (void)rotateGraduation
 
{
 
    self.timeCount--;
 
    if(self.timeCount== 0)
 
    {
 
        [selfstopTimer];
 
        // doSomeThing //旋转完毕 可以干点别的
 
        self.timeCount= 25;
 
    }
 
    else
 
    {
 
        //计算角度 旋转
 
        staticCGFloat radian = 150* (M_2_PI/ 360);
 
        CGAffineTransformtransformTmp = self.lightImageView.transform;
 
        transformTmp = CGAffineTransformRotate(transformTmp, radian);
 
        self.lightImageView.transform= transformTmp;
 
    };
 
}
 
调用方法
 
self.timeCount= 25;//动画执行25次
 
[selfstartRotate];
0 0
原创粉丝点击