Skip to content

Commit

Permalink
[#25]Enhance: 실 디바이스에서 애니메이션 제대로 적용 안 되는 문제 수정
Browse files Browse the repository at this point in the history
- progess를 셋째자리까지 표현하면 오차가 발생해서 원하는대로 애니메이션이 적용되지 않음.
- 또한 각도를 30도로 하게 되면 점과 선의 거리가 멀어 보여서 18도로 설정
  • Loading branch information
Minny27 committed Mar 29, 2024
1 parent 82618be commit 7501b36
Showing 1 changed file with 6 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -214,10 +214,10 @@ final class FallingUserCollectionViewCell: TFBaseCollectionViewCell {
}

func dotPosition(progress: CGFloat, rect: CGRect) -> CGPoint {
let progress = round(progress * 100) / 100 // 오차를 줄이기 위함
let radius = CGFloat(rect.height / 2 - cardTimeView.timerView.strokeLayer.lineWidth / 2)

var angle = 2 * CGFloat.pi * progress - CGFloat.pi / 2 + CGFloat.pi / 6 // 두 원의 중점과 원점이 이루는 각도를 30도로 가정

// 3 / 2 pi(정점 각도) -> - 1 / 2 pi(정점)
var angle = 2 * CGFloat.pi * progress - CGFloat.pi / 2 + CGFloat.pi / 10 // 두 원의 중점과 원점이 이루는 각도를 18도로 가정
if angle <= -CGFloat.pi / 2 || CGFloat.pi * 1.5 <= angle {
angle = -CGFloat.pi / 2 // 정점 각도
}
Expand Down Expand Up @@ -266,7 +266,9 @@ extension Reactive where Base: FallingUserCollectionViewCell {

base.cardTimeView.progressView.progress = timeState.getProgress

let strokeEnd = timeState.getProgress
// 소수점 3번 째자리까지 표시하면 오차가 발생해서 2번 째자리까지만 표시
let strokeEnd = round(timeState.getProgress * 100) / 100

base.cardTimeView.timerView.dotLayer.position = base.dotPosition(progress: strokeEnd, rect: base.cardTimeView.timerView.bounds)

base.cardTimeView.timerView.strokeLayer.strokeEnd = strokeEnd
Expand Down

0 comments on commit 7501b36

Please sign in to comment.