안녕하세요.
이번에는 TimelineView에 대해 간단하게 알아볼게요.

스케줄에 따라 업데이트가 되는 뷰.
즉, TimelineView는 일정한 주기에 따라서 뷰가 업데이트되는 컨테이너 뷰입니다.
아래처럼 1초마다 뷰가 다시 그려지도록 구현할 수도 있죠.
struct ContentView: View { | |
var body: some View { | |
TimelineView(.periodic(from: .now, by: 1.0)) { _ in | |
Text("\(Date.now)") | |
} | |
} | |
} |

TimelineView의 클로저는 context라는 파라미터가 있는데, context는 업데이트를 트리거하는 스케쥴러에 대한 시간(date)을 가지고 있습니다.
그래서 아래처럼 context.date를 활용할 수도 있어요.
struct ContentView: View { | |
var body: some View { | |
TimelineView(.animation) { context in | |
let value = secondsValue(for: context.date) | |
Circle() | |
.trim(from: 0, to: value) | |
.stroke() | |
} | |
} | |
private func secondsValue(for date: Date) -> Double { | |
let seconds = Calendar.current.component(.second, from: date) | |
return Double(seconds) / 60 | |
} | |
} |

context는 cadence라는 프로퍼티도 가지고 있어요. cadence는 TimelineView가 업데이트되는 속도를 나타냅니다.
enum 타입으로 아래 같은 3가지 타입을 가지고 있어요.
(실시간 업데이트, 약 1초마다 업데이트, 약 1분마다 업데이트)

cadence에 대해서는... 제가 아직 잘 이해를 못 해서 조금 더 공부를 해봐야 할 것 같아요!!ㅠㅠ
## 참고
- https://developer.apple.com/documentation/swiftui/timelineview
- https://swiftwithmajid.com/2022/05/18/mastering-timelineview-in-swiftui/
이번에는 TimelineView에 대해서 아주 기초만 알아봤구요.
다음번에는 TimelineView의 스케쥴러에 대해 더 깊게 알아볼게요!!
이번 글은 여기서 마무리.
'SwiftUI' 카테고리의 다른 글
텍스트 길이에 맞춰서 자식뷰의 width를 통일시키는 방법 (0) | 2022.06.18 |
---|---|
View Identity와 transition 관계 (0) | 2022.06.17 |
trim (0) | 2022.06.06 |
PreferenceKey (0) | 2022.05.30 |
Environment (0) | 2022.05.29 |