iOS 左右抖动的动画

我是写了个扩展类,方便用到的view可以很便捷的使用,以下是所有代码,可以直接引入工程使用

OC版

/**

   扩展UIView增加抖动方法

    

   @param direction:抖动方向(默认是水平方向)

   @param times:抖动次数(默认5次)

   @param interval:每次抖动时间(默认0.1秒)

   @param delta:抖动偏移量(默认2)

   @param completion:抖动动画结束后的回调

   */

-(void)shakeDirection:(ShakeDirection)direction times:(int)times interval:(NSTimeInterval)interval delta:(CGFloat) delta finished:(finished)finished{

if (times == 0) {

        self.transform = CGAffineTransformIdentity;

    }else{

        

            [UIView animateWithDuration:interval animations:^{

 

                switch (direction) {

                    case horizontal:

                    {

                        self.transform = CGAffineTransformMakeTranslation(delta, 0);

                    }

                        break;

                    case vetrtical:{

                        self.transform = CGAffineTransformMakeTranslation(0,delta);

                    }

                        break;

                    default:

                        break;

                }

                } completion:^(BOOL finish) {

                    [self shakeDirection:horizontal times:times-1 interval:interval delta:delta * -1 finished:finished];

                }];

    }

}

 

 

swift版本

extension UIView{

    public func shake(direction:ShakeDirection = .horizontal,times: Int = 5,

                      interval:TimeInterval = 0.1, delta : CGFloat = 2,completion:(() -> Void)?=nil){

        if times == 0 {

            self.layer.setAffineTransform(CGAffineTransform.identity)

        }else{

            UIView.animate(withDuration: interval) {

                switch direction {

                case .horizontal:

                    self.layer.setAffineTransform(CGAffineTransform(translationX: delta, y: 0))

                    break

                case .vertical:

                    self.layer.setAffineTransform(CGAffineTransform(translationX: 0, y: delta))

                    break

                    

                }

 

            } completion: { (finished) in

                self.shake(direction: direction, times: times - 1 , interval: interval, delta: delta * -1, completion: completion)

            }

        }

        }

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值