From ee4b65e331a8b515c834b505ab45d48d75ec3d9c Mon Sep 17 00:00:00 2001 From: Massimo Biolcati Date: Wed, 15 Jul 2020 00:05:57 -0400 Subject: [PATCH 1/2] Fix two small typos --- Example/IHProgressHUD/ViewController.swift | 2 +- Example/tvOSSample/ViewController.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Example/IHProgressHUD/ViewController.swift b/Example/IHProgressHUD/ViewController.swift index 6d16c6c..f642b88 100644 --- a/Example/IHProgressHUD/ViewController.swift +++ b/Example/IHProgressHUD/ViewController.swift @@ -75,7 +75,7 @@ class ViewController : UIViewController { @IBAction func showSuccessWithStatus(_ sender: Any) { - IHProgressHUD.showSuccesswithStatus("Status Sucess") + IHProgressHUD.showSuccesswithStatus("Status Success") } @IBAction func showErrorWithStatus(_ sender: UIButton) { diff --git a/Example/tvOSSample/ViewController.swift b/Example/tvOSSample/ViewController.swift index 0f492a3..b72b9c7 100644 --- a/Example/tvOSSample/ViewController.swift +++ b/Example/tvOSSample/ViewController.swift @@ -62,7 +62,7 @@ class ViewController: UIViewController { @IBAction func showSuccessWithStatus(_ sender: Any) { - IHProgressHUD.showSuccesswithStatus("Status Sucess") + IHProgressHUD.showSuccesswithStatus("Status Success") } @IBAction func showErrorWithStatus(_ sender: UIButton) { From 799d1825106eb84da225b0ad93dbe5f87c5d9641 Mon Sep 17 00:00:00 2001 From: Massimo Biolcati Date: Wed, 15 Jul 2020 00:29:39 -0400 Subject: [PATCH 2/2] =?UTF-8?q?Reimplement=20indefinite=20animated=20view?= =?UTF-8?q?=20to=20not=20use=20an=20image=20as=20mask=20but=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit … instead just a gradient. Also, use round lineJoin for nicer rounded shape --- .../IHProgressHUD.bundle/angle-mask@1x.png | Bin 4816 -> 0 bytes .../IHProgressHUD.bundle/angle-mask@2x.png | Bin 14646 -> 0 bytes .../IHProgressHUD.bundle/angle-mask@3x.png | Bin 26585 -> 0 bytes .../Classes/IndefiniteAnimatedView.swift | 108 +++++++++--------- .../Classes/ProgressAnimatedView.swift | 6 +- 5 files changed, 57 insertions(+), 57 deletions(-) delete mode 100644 IHProgressHUD/Classes/IHProgressHUD.bundle/angle-mask@1x.png delete mode 100644 IHProgressHUD/Classes/IHProgressHUD.bundle/angle-mask@2x.png delete mode 100644 IHProgressHUD/Classes/IHProgressHUD.bundle/angle-mask@3x.png diff --git a/IHProgressHUD/Classes/IHProgressHUD.bundle/angle-mask@1x.png b/IHProgressHUD/Classes/IHProgressHUD.bundle/angle-mask@1x.png deleted file mode 100644 index ffecbd448c0a3e7e44f60d152db622763eb27804..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4816 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 diff --git a/IHProgressHUD/Classes/IHProgressHUD.bundle/angle-mask@2x.png b/IHProgressHUD/Classes/IHProgressHUD.bundle/angle-mask@2x.png deleted file mode 100644 index 452458effa72b5dc46d3c143e7648db424151138..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14646 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 CAShapeLayer { - if self.indefinteAnimatedLayer != nil { - return self.indefinteAnimatedLayer! + private func getIndefiniteAnimatedGradientLayer() -> CAGradientLayer { + if indefiniteAnimatedGradientLayer != nil { + return indefiniteAnimatedGradientLayer! } else { - let localRingRadius : CGFloat = radius ?? 18 - let localStrokeThickness : CGFloat = strokeThickness ?? 2 - let localStrokeColor : UIColor = strokeColor ?? UIColor.black - + let localRingRadius: CGFloat = radius ?? 18 + let localStrokeThickness: CGFloat = strokeThickness ?? 2 + let localStrokeColor: UIColor = strokeColor ?? UIColor.black let arcCenter = CGPoint(x: localRingRadius + localStrokeThickness / 2 + 5, y: localRingRadius + localStrokeThickness / 2 + 5) - let smoothedPath = UIBezierPath(arcCenter: arcCenter, radius: localRingRadius, startAngle: -CGFloat.pi / 2, endAngle: CGFloat.pi + CGFloat.pi / 2, clockwise: true) - indefinteAnimatedLayer = CAShapeLayer() - indefinteAnimatedLayer?.contentsScale = UIScreen.main.scale - indefinteAnimatedLayer?.frame = CGRect.init(x: 0, y: 0, width: arcCenter.x * 2, height: arcCenter.y * 2) - indefinteAnimatedLayer?.fillColor = UIColor.clear.cgColor - indefinteAnimatedLayer?.strokeColor = localStrokeColor.cgColor - indefinteAnimatedLayer?.lineWidth = localStrokeThickness - indefinteAnimatedLayer?.lineCap = CAShapeLayerLineCap.round - indefinteAnimatedLayer?.lineJoin = CAShapeLayerLineJoin.bevel - indefinteAnimatedLayer?.path = smoothedPath.cgPath + let smoothedPath = UIBezierPath(arcCenter: arcCenter, radius: localRingRadius, startAngle: .pi * 3 / 2, endAngle: -0.5 * .pi, clockwise: false) - let maskLayer = CALayer() - let image = loadImageBundle(named: "angle-mask")! - maskLayer.contents = image.cgImage - maskLayer.frame = indefinteAnimatedLayer!.bounds - indefinteAnimatedLayer?.mask = maskLayer + let shapeLayer = CAShapeLayer() + shapeLayer.contentsScale = UIScreen.main.scale + shapeLayer.frame = CGRect(x: 0.0, y: 0.0, width: arcCenter.x * 2, height: arcCenter.y * 2) + shapeLayer.fillColor = UIColor.clear.cgColor + shapeLayer.strokeColor = strokeColor?.cgColor + shapeLayer.lineWidth = localStrokeThickness + shapeLayer.lineCap = .round + shapeLayer.lineJoin = .round + shapeLayer.path = smoothedPath.cgPath + shapeLayer.strokeStart = 0.4 + shapeLayer.strokeEnd = 1.0 - let animationDuration = TimeInterval.init(1) - let linearCurve = CAMediaTimingFunction.init(name: .linear) - let animation = CABasicAnimation.init(keyPath: "transform.rotation") + indefiniteAnimatedGradientLayer = CAGradientLayer() + indefiniteAnimatedGradientLayer?.startPoint = CGPoint(x: 0.5, y: 0.0) + indefiniteAnimatedGradientLayer?.endPoint = CGPoint(x: 0.5, y: 1.0) + indefiniteAnimatedGradientLayer?.frame = shapeLayer.bounds + indefiniteAnimatedGradientLayer?.colors = [localStrokeColor.withAlphaComponent(0).cgColor, localStrokeColor.withAlphaComponent(0.5).cgColor, localStrokeColor.cgColor] + indefiniteAnimatedGradientLayer?.locations = [NSNumber(value: 0.25), NSNumber(value: 0.5), NSNumber(value: 1.0)] + indefiniteAnimatedGradientLayer?.mask = shapeLayer + + let animationDuration = TimeInterval(1) + let linearCurve = CAMediaTimingFunction(name: .linear) + let animation = CABasicAnimation(keyPath: "transform.rotation") animation.fromValue = 0 animation.toValue = CGFloat.pi * 2 animation.duration = animationDuration @@ -100,28 +114,14 @@ extension IndefiniteAnimatedView { animation.repeatCount = .infinity animation.fillMode = .forwards animation.autoreverses = false - indefinteAnimatedLayer?.mask?.add(animation, forKey: "rotate") - - - let animationGroup = CAAnimationGroup.init() - animationGroup.duration = animationDuration - animationGroup.repeatCount = .infinity - animationGroup.isRemovedOnCompletion = false - animationGroup.timingFunction = linearCurve - - let strokeStartAnimation = CABasicAnimation.init(keyPath: "strokeStart") - strokeStartAnimation.duration = animationDuration - strokeStartAnimation.fromValue = 0.015 - strokeStartAnimation.toValue = 0.0001 - - animationGroup.animations = [strokeStartAnimation] - indefinteAnimatedLayer?.add(animationGroup, forKey: "progress") + indefiniteAnimatedGradientLayer?.add(animation, forKey: "progress") } - return self.indefinteAnimatedLayer! + return self.indefiniteAnimatedGradientLayer! } } -//MARK: - ActivityIndicatorView Functions +// MARK: - ActivityIndicatorView Functions + extension IndefiniteAnimatedView { func removeAnimationLayer() { @@ -130,7 +130,7 @@ extension IndefiniteAnimatedView { activityView.removeFromSuperview() } } - getIndefinteAnimatedLayer().removeFromSuperlayer() + getIndefiniteAnimatedGradientLayer().removeFromSuperlayer() } func startAnimation() { @@ -157,13 +157,13 @@ extension IndefiniteAnimatedView { if let _ = newSuperview { layoutAnimatedLayer() } else { - getIndefinteAnimatedLayer().removeFromSuperlayer() - indefinteAnimatedLayer = nil + getIndefiniteAnimatedGradientLayer().removeFromSuperlayer() + indefiniteAnimatedGradientLayer = nil } } private func layoutAnimatedLayer() { - let calayer = getIndefinteAnimatedLayer() + let calayer = getIndefiniteAnimatedGradientLayer() self.layer.addSublayer(calayer) let widthDiff: CGFloat = bounds.width - layer.bounds.width let heightDiff: CGFloat = bounds.height - layer.bounds.height diff --git a/IHProgressHUD/Classes/ProgressAnimatedView.swift b/IHProgressHUD/Classes/ProgressAnimatedView.swift index 5437310..356c53f 100755 --- a/IHProgressHUD/Classes/ProgressAnimatedView.swift +++ b/IHProgressHUD/Classes/ProgressAnimatedView.swift @@ -50,7 +50,7 @@ class ProgressAnimatedView: UIView { let localStrokeThickness : CGFloat = strokeThickness ?? 2 return CGSize(width: (localRadius + localStrokeThickness / 2 + 5) * 2, height: (localRadius + localStrokeThickness / 2 + 5) * 2) } - + } //MARK: - Setter @@ -71,7 +71,7 @@ extension ProgressAnimatedView { func set(strokeThickness : CGFloat) { self.strokeThickness = strokeThickness getRingAnimatedLayer().lineWidth = strokeThickness - + if superview != nil { layoutAnimatedLayer() } @@ -118,7 +118,7 @@ extension ProgressAnimatedView { _ringAnimatedLayer.strokeColor = strokeColor?.cgColor _ringAnimatedLayer.lineWidth = localStrokeThickness _ringAnimatedLayer.lineCap = .round - _ringAnimatedLayer.lineJoin = .bevel + _ringAnimatedLayer.lineJoin = .round _ringAnimatedLayer.path = smoothedPath.cgPath self.ringAnimatedLayer = _ringAnimatedLayer }