类似于系统的删除 颤抖效果

最近做一个功能,类似于系统删除APP的效果。见下面代码:

1、通过UIView动画效果

-(void)BeginShake
{
    srand([[NSDate date] timeIntervalSince1970]);
    float rand=(float)random();
    CFTimeInterval t=rand*0.0000000001;
    
    [UIView animateWithDuration:0.1 delay:t options:0  animations:^
     {
         self.hahahView.transform=CGAffineTransformMakeRotation(-0.05);
     } completion:^(BOOL finished){
         [UIView animateWithDuration:0.1 delay:0 options:UIViewAnimationOptionRepeat|UIViewAnimationOptionAutoreverse|UIViewAnimationOptionAllowUserInteraction  animations:^
          {
              self.hahahView.transform=CGAffineTransformMakeRotation(0.05);
          } completion:nil];
     }];
}
-(void)EndShake
{
    [UIView animateWithDuration:0.1 delay:0 options:UIViewAnimationOptionAllowUserInteraction|UIViewAnimationOptionBeginFromCurrentState animations:^{
         self.hahahView.transform=CGAffineTransformIdentity;
     } completion:nil];
}

//附带

UIViewAnimationOptionLayoutSubviews            // 所有子视图跟随一起动画(默认)
UIViewAnimationOptionAllowUserInteraction      // 动画过程中允许交互操作,但是响应的位置以视图动画最终位置为准
UIViewAnimationOptionBeginFromCurrentState     // 从当前的状态开始动画
UIViewAnimationOptionRepeat                    // 重复执行动画,单次动画结束,瞬间变为初始状态继续进行动画,依此循环
UIViewAnimationOptionAutoreverse               // 往返执行动画,单次动画结束,沿原路径返回反向执行,要与UIViewAnimationOptionRepeat同时使用
UIViewAnimationOptionOverrideInheritedDuration // 在嵌套动画中,不受父层动画时间影响。默认情况下子层继承父层动画时间,忽略自己的时间
UIViewAnimationOptionOverrideInheritedCurve    // 在嵌套动画中,不受父层属性动画时间(如UIViewAnimationOptionCurveEaseInOut)影响
UIViewAnimationOptionAllowAnimatedContent      // 允许多个动画同时执行
UIViewAnimationOptionShowHideTransitionViews   // 控制两个动画视图的显示和隐藏(功能类似于addsubview+removefromsuperview),使用这个属性(一般在transitionFromView:toView:duration:options:completion:这个方法中使用),fromView会被隐藏,toView会被显示
UIViewAnimationOptionOverrideInheritedOptions  // 不使用任何选项

/* 动画速度方式 */
UIViewAnimationOptionCurveEaseInOut            // 慢->快->慢
UIViewAnimationOptionCurveEaseIn               // 慢->快
UIViewAnimationOptionCurveEaseOut              // 快->慢
UIViewAnimationOptionCurveLinear               // 匀速

/* 动画过渡方式 */
UIViewAnimationOptionTransitionNone            // 不指定过度方式
UIViewAnimationOptionTransitionFlipFromLeft    // 从左侧翻转
UIViewAnimationOptionTransitionFlipFromRight   // 从右侧翻转
UIViewAnimationOptionTransitionCurlUp          // 从上部翻页
UIViewAnimationOptionTransitionCurlDown        // 从下部翻页
UIViewAnimationOptionTransitionCrossDissolve   // 动画初始位置状态由显示逐渐透明隐藏,动画结束位置状态由透明逐渐变为显示
UIViewAnimationOptionTransitionFlipFromTop     // 从上部翻转
UIViewAnimationOptionTransitionFlipFromBottom  // 从下部翻转

UIViewAnimationOptionPreferredFramesPerSecondDefault  // 默认
UIViewAnimationOptionPreferredFramesPerSecond60       // 每秒60帧的刷新速率
UIViewAnimationOptionPreferredFramesPerSecond30       // 每秒30帧的刷新速率

2、通过CABaseAnimation

- (void)viewDidLoad {
    [super viewDidLoad];
    self.hahahView.layer.contents = (__bridge id)([UIImage imageNamed: @"a"].CGImage);
}
- (IBAction)addAnimation:(id)sender {
    CAKeyframeAnimation *keyAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"];
    keyAnimation.values = @[@(-M_PI_4 * 0.1 * 1), @(M_PI_4 * 0.1 * 1), @(-M_PI_4 * 0.1 * 1)];
    keyAnimation.repeatCount = CGFLOAT_MAX;
    [self.hahahView.layer addAnimation:keyAnimation forKey:@"keyAnimation"];
}
- (IBAction)cancelAnimation:(id)sender {
    [self.hahahView.layer removeAllAnimations];
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值