Language/Swift
SwiftUI를 이용한 진행률 뷰 만들기(ProgressView)
IFLA
2022. 11. 15. 09:00
SwiftUI는 가로로 된 진행률을 보여주는 ProgressView 가 있다. 값은 Double로 바인딩할 수 있다. 예를 들면 어떤 프로그램을 다운받을 때 어느 정도 다운되었는 지 보여주는 진행 정도를 화면에 표출하는 게 ProgressView다.
기본 코드
import SwiftUI
struct ContentView: View {
@State private var downloadAmount: Double = 0.0
let timer = Timer.publish(every: 0.1, on: .main, in: .common).autoconnect()
var body: some View {
VStack {
ProgressView("다운로드 중..", value: downloadAmount, total: 100)
.padding()
}
.onReceive(timer) { _ in
if downloadAmount < 100 {
downloadAmount += 5
}
}
}
}
실제는 진행정도를 값으로 받아서 보여줘야 하지만 값을 임의로 변경하기 위해 Timer를 사용해 downloadAmount 값을 변경한다. 변경된 값을 데이터를 감지하고 액션을 취할 수 있도록 .onReceive를 사용한다.
- .onReceive는 데이터를 탐지하고 액션을 취하며 event 를 내보낼 때 작업을 트리거하는 view다.
실행 화면
스타일
- CircularProgressViewStyle()
- LinearProgressViewStyle()
struct ContentView: View {
@State var progress : Double = 0.3
var body: some View {
ProgressView(value: progress)
.progressViewStyle(LinearProgressViewStyle(tint: .red))
.padding()
}
}