diff --git a/SSSpinnerButton Demo/ViewController.swift b/SSSpinnerButton Demo/ViewController.swift index 2193f0a..3f2076f 100644 --- a/SSSpinnerButton Demo/ViewController.swift +++ b/SSSpinnerButton Demo/ViewController.swift @@ -22,6 +22,7 @@ class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() btnRippleEffect.setRippleEffect(rippleEffectAnimationDuration: 0.3, initialOpacity: 0.5, rippleEffectColor: .black, rippleEffectPercent: 0.45, initialRippleEffectPercent: 0.3) + print("hello world") // Do any additional setup after loading the view, typically from a nib. } @@ -29,7 +30,7 @@ class ViewController: UIViewController { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } - + @IBAction func onSpinnnerButtonClick(_ sender: SSSpinnerButton) { let arr: [SpinnerType] = [.ballClipRotate, .ballSpinFade, .lineSpinFade, .ballRotateChase, .circleStrokeSpin, .ballClipRotate, .ballSpinFade, .lineSpinFade, .ballRotateChase, .pacman, .circleScaleMultiple, .circleWaveSpin] diff --git a/SSSpinnerButton/SpinerShapes/SpinnerShapeWithAnimation/SSCircleScaleMultiple.swift b/SSSpinnerButton/SpinerShapes/SpinnerShapeWithAnimation/SSCircleScaleMultiple.swift index 617e886..c4cd451 100644 --- a/SSSpinnerButton/SpinerShapes/SpinnerShapeWithAnimation/SSCircleScaleMultiple.swift +++ b/SSSpinnerButton/SpinerShapes/SpinnerShapeWithAnimation/SSCircleScaleMultiple.swift @@ -59,4 +59,45 @@ class SSCircleScaleMultiple: SSSpinnerAnimationDelegate { layer.addSublayer(circle) } } + + func setupSpinnerAnimation(layer: CALayer, frame: CGRect, color: UIColor, spinnerSize: UInt?) { + let sizeValue =min(frame.width, frame.height) + let center =CGPoint(x: 0, y: 0) + let duration:CFTimeInterval = 1 + let beginTime = CACurrentMediaTime() + let beginTimes = [0, 0.2, 0.4] + + // Scale animation + let scaleAnimation =CABasicAnimation(keyPath: "transform.scale") + + scaleAnimation.duration = duration + scaleAnimation.fromValue = 0 + scaleAnimation.toValue = 1 + + // Opacity animation + let opacityAnimation = CAKeyframeAnimation(keyPath: "opacity") + opacityAnimation.duration = duration + opacityAnimation.keyTimes = [0, 0.05, 1] + opacityAnimation.values = [0, 1, 0] + + // Animation + let animation = CAAnimationGroup() + + animation.animations = [scaleAnimation, opacityAnimation] + animation.timingFunction = CAMediaTimingFunction(name: .linear) + animation.duration = duration + animation.repeatCount = HUGE + animation.isRemovedOnCompletion = false + + // Draw balls + for i in 0 ..< 3 { + let circle = SpinnerShape.circle.layerWith(size: CGSize(width: sizeValue, height: sizeValue), color: color) + let frame = CGRect(x: center.x, y: center.y, width: sizeValue, height: sizeValue) + animation.beginTime = beginTime + beginTimes[i] + circle.frame = frame + circle.opacity = 0 + circle.add(animation, forKey: "animation") + layer.addSublayer(circle) + } + } }