From ea9e4baac8742f38e7cc0f9f265598ff3b5fadd5 Mon Sep 17 00:00:00 2001 From: LeeSeungmin Date: Sun, 26 May 2024 22:40:53 +0900 Subject: [PATCH] =?UTF-8?q?[#79]Feat:=20=EC=A2=8B=EC=95=84=EC=9A=94=20?= =?UTF-8?q?=EB=B2=84=ED=8A=BC=20=ED=81=B4=EB=A6=AD=20=EC=8B=9C,=20?= =?UTF-8?q?=EC=9B=90=ED=98=95=20timer,=20progress=20=EA=B7=B8=EB=A0=88?= =?UTF-8?q?=EB=94=94=EC=96=B8=ED=8A=B8=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Src/Subviews/CardCircleTimerView.swift | 54 +++++++++++++++++++ .../Src/Subviews/CardProgressView.swift | 19 +++++++ 2 files changed, 73 insertions(+) diff --git a/Projects/Features/Falling/Src/Subviews/CardCircleTimerView.swift b/Projects/Features/Falling/Src/Subviews/CardCircleTimerView.swift index 952c87d3..b6dd9f90 100644 --- a/Projects/Features/Falling/Src/Subviews/CardCircleTimerView.swift +++ b/Projects/Features/Falling/Src/Subviews/CardCircleTimerView.swift @@ -43,6 +43,12 @@ final class CardCircleTimerView: TFBaseView { return layer }() + private lazy var likeImageView: UIImageView = { + let imageView = UIImageView() + imageView.image = DSKitAsset.Image.Icons.cardLike.image.withTintColor(DSKitAsset.Color.error.color) + return imageView + }() + override func makeUI() { layer.addSublayer(trackLayer) layer.addSublayer(strokeLayer) @@ -81,4 +87,52 @@ final class CardCircleTimerView: TFBaseView { clockwise: true) dotLayer.path = dotPath.cgPath } + + func addGradientLayer() { + self.addSubview(likeImageView) + + likeImageView.snp.makeConstraints { + $0.centerX.centerY.equalToSuperview() + $0.width.equalTo(8) + $0.height.equalTo(7) + } + + let gradientLayer = CAGradientLayer() + + gradientLayer.frame = self.bounds + + gradientLayer.colors = [ + DSKitAsset.Color.LikeGradient.gradientFirst.color.cgColor, + DSKitAsset.Color.LikeGradient.gradientSecond.color.cgColor, + DSKitAsset.Color.LikeGradient.gradientThird.color.cgColor + ] + + gradientLayer.locations = [0.0, 0.5, 1.0] + + gradientLayer.startPoint = CGPoint(x: 0.5, y: 1.0) + gradientLayer.endPoint = CGPoint(x: 0.5, y: 0.0) + + gradientLayer.mask = trackLayer + + layer.addSublayer(gradientLayer) + +// // 그라디언트 방향 애니메이션 설정 +// let startPointAnimation = CABasicAnimation(keyPath: "startPoint") +// startPointAnimation.fromValue = CGPoint(x: 0.5, y: 0.0) +// startPointAnimation.toValue = CGPoint(x: 0.5, y: 1.0) +// +// let endPointAnimation = CABasicAnimation(keyPath: "endPoint") +// endPointAnimation.fromValue = CGPoint(x: 0.5, y: 1.0) +// endPointAnimation.toValue = CGPoint(x: 0.5, y: 0.0) +// +// // 애니메이션 설정 (동일한 타이밍으로 적용) +// let animationGroup = CAAnimationGroup() +// animationGroup.animations = [startPointAnimation, endPointAnimation] +// animationGroup.duration = 2.0 +// animationGroup.autoreverses = true +// animationGroup.repeatCount = .infinity +// +// // 그라디언트 레이어에 애니메이션 추가 +// gradientLayer.add(animationGroup, forKey: "gradientMove") + } } diff --git a/Projects/Features/Falling/Src/Subviews/CardProgressView.swift b/Projects/Features/Falling/Src/Subviews/CardProgressView.swift index 8dabcbe8..17c749d5 100644 --- a/Projects/Features/Falling/Src/Subviews/CardProgressView.swift +++ b/Projects/Features/Falling/Src/Subviews/CardProgressView.swift @@ -44,4 +44,23 @@ final class CardProgressView: TFBaseView { self.layer.masksToBounds = true self.backgroundColor = DSKitAsset.Color.neutral600.color } + + func addGradientLayer() { + let gradientLayer = CAGradientLayer() + + gradientLayer.frame = self.bounds + + gradientLayer.colors = [ + DSKitAsset.Color.LikeGradient.gradientFirst.color.cgColor, + DSKitAsset.Color.LikeGradient.gradientSecond.color.cgColor, + DSKitAsset.Color.LikeGradient.gradientThird.color.cgColor + ] + + gradientLayer.locations = [0.0, 0.5, 1.0] + + gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.5) + gradientLayer.endPoint = CGPoint(x: 1.0, y: 0.5) + + layer.addSublayer(gradientLayer) + } }