Skip to content

Commit 0a1b902

Browse files
design: 홈화면 분실물 라벨 애니메이션
1 parent 4fd2e9a commit 0a1b902

1 file changed

Lines changed: 38 additions & 8 deletions

File tree

Koin/Presentation/Home/Home/SubViews/LostItemListView.swift

Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ final class LostItemListView: UIView {
1212

1313
// MARK: - Properties
1414
let lostItemListTappedPublisher = PassthroughSubject<Void, Never>()
15+
var timer: Timer?
16+
private var foundCountTitle: String = ""
17+
private var notFoundCountTitle: String = ""
1518

1619
// MARK: - UI Components
1720
private let nameLabel = UILabel().then {
@@ -42,21 +45,48 @@ final class LostItemListView: UIView {
4245
}
4346

4447
func configure(lostItemStats: LostItemStats) {
45-
let title: String
48+
foundCountTitle = "지금까지 \(lostItemStats.foundCount)명이 분실물을 찾았어요."
49+
notFoundCountTitle = "\(lostItemStats.notFoundCount)개의 분실물이 주인을 찾고있어요."
50+
descriptionButton.setAttributedTitle(NSAttributedString(
51+
string: notFoundCountTitle,
52+
attributes: [
53+
.font : UIFont.appFont(.pretendardMedium, size: 14),
54+
.foregroundColor : UIColor.appColor(.neutral800)
55+
]), for: .normal
56+
)
57+
4658
if 50 <= lostItemStats.foundCount {
47-
title = "지금까지 \(lostItemStats.foundCount)명이 분실물을 찾았어요."
48-
} else {
49-
title = "\(lostItemStats.notFoundCount)개의 분실물이 주인을 찾고있어요."
59+
setTimer()
5060
}
51-
descriptionButton.setAttributedTitle(NSAttributedString(string: title, attributes: [
52-
.font: UIFont.appFont(.pretendardMedium, size: 14),
53-
.foregroundColor: UIColor.appColor(.neutral800)
54-
]), for: .normal)
5561
}
5662
}
5763

5864
extension LostItemListView {
5965

66+
private func setTimer() {
67+
timer = Timer.scheduledTimer(withTimeInterval: 5, repeats: true) { [weak self] _ in
68+
guard let self else { return }
69+
70+
let transition = CATransition().then {
71+
$0.duration = 0.4
72+
$0.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut)
73+
$0.type = .push
74+
$0.subtype = .fromTop
75+
}
76+
descriptionButton.titleLabel?.layer.add(transition, forKey: "newTitle")
77+
78+
let newTitle = descriptionButton.titleLabel?.text == notFoundCountTitle ? foundCountTitle : notFoundCountTitle
79+
80+
descriptionButton.setAttributedTitle(NSAttributedString(
81+
string: newTitle,
82+
attributes: [
83+
.font : UIFont.appFont(.pretendardMedium, size: 14),
84+
.foregroundColor : UIColor.appColor(.neutral800)
85+
]), for: .normal
86+
)
87+
}
88+
}
89+
6090
private func setAddTargets() {
6191
[chevronButton, descriptionButton].forEach {
6292
$0.addTarget(self, action: #selector(lostItemListTapped), for: .touchUpInside)

0 commit comments

Comments
 (0)