New SwiftUI! - ProgressView
いわゆる"progress bar"、何かしら実行、処理中にその状況を知らせるためのインジケータです。まずは処理中を示す"Loawding"を表示のみさせます。
struct ContentView: View {
var body: some View {
ProgressView("Loawding")
}
}
実行結果です。
ProgressView("Loawding")
指定した"Loawding"が表示され、くるくる回るアイコンが表示されます。これに"progress bar"を追加、表示させます。
"progress bar"に必要な処理の時間、その量を決めていきます。まずその量を示す変数Valueを作ります。そしてその量をどのタイミングで動かしていくかを指定します。
struct ContentView: View {
@State private var valueAmount = 0.0
var body: some View {
VStack {
ProgressView("Loawding",value:valueAmount,total:100)
Button("Move plus"){
valueAmount += 1
}
}
}
}
変数です。
@State private var valueAmount = 0.0
そして、その処理の内容を決めます。今回はボタンの操作で、”progress bar"の量を変えていきます。
Button("Move plus"){
valueAmount += 1
}
ボタンを押すたびにバーが伸びていきます。
変数のデータの増減によって”progress bar"が変化する仕組みです。
サンプルをもう一つ、以下サイトで紹介されています。
struct ContentView: View {
@State private var downloadAmount = 0.0
let timer = Timer.publish(every: 0.1, on: .main, in: .common).autoconnect()
var body: some View {
VStack {
ProgressView("Downloading…", value: downloadAmount, total: 100)
}
.onReceive(timer) { _ in
if downloadAmount < 100 {
downloadAmount += 2
}
}
}
}
実行すると
となり、ローディングっぽくなっています。
こちらでも紹介されています。