美文网首页iOS Develop
iOS图标抖动效果

iOS图标抖动效果

作者: iOS_林亦辰 | 来源:发表于2019-09-27 16:14 被阅读0次

    开始抖动

    -(void)BeginWobble
    {
    
        srand([[NSDate date] timeIntervalSince1970]);
        float rand=(float)random();
        CFTimeInterval t=rand*0.0000000001;
        
        [UIView animateWithDuration:0.1 delay:t options:0  animations:^
         {
             要抖动的视图.transform=CGAffineTransformMakeRotation(-0.05);
         } completion:^(BOOL finished)
         {
             [UIView animateWithDuration:0.1 delay:0 options:UIViewAnimationOptionRepeat|UIViewAnimationOptionAutoreverse|UIViewAnimationOptionAllowUserInteraction  animations:^
              {
                  要抖动的视图.transform=CGAffineTransformMakeRotation(0.05);
              } completion:^(BOOL finished) {}];
         }];
    }
    

    停止抖动

    -(void)EndWobble
    {
    
        [UIView animateWithDuration:0.1 delay:0 options:UIViewAnimationOptionAllowUserInteraction|UIViewAnimationOptionBeginFromCurrentState animations:^
         {
             要抖动的视图.transform=CGAffineTransformIdentity;
         } completion:^(BOOL finished) {}];
    }
    

    以上是左右抖动效果,另有放大缩小效果见
    Demo:https://github.com/fateshen/SZWobble
    如有启发请点✨Star💗

    UIViewAnimationOptions解释
    有评论的朋友说解释一下UIViewAnimationOptions中的枚举值都是什么意思,今天写了一下供大家参考:

    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帧的刷新速率
    

    相关文章

      网友评论

        本文标题:iOS图标抖动效果

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