こんにちはコーヤです。
このページでは、SwiftUIのスライダーの使用方法についてご紹介します。
以下のバージョンで動作確認しています。
- Xcode 13.4.1
- Swift 5.6.1
スライダーのコード
Slider(value: 値)
![](https://darts25.com/wp-content/uploads/2022/09/842777a24c7d1b93ce4be3a68c83f211-1024x576.jpeg)
![](https://darts25.com/wp-content/uploads/2022/09/1b42b55db1ab35556eee54db9786086a-1024x576.jpeg)
struct ContentView: View {
@State var num: Float = 0.0
var body: some View {
VStack {
Slider(value: $num)
.frame(width: 200)
Text(String(format: "%.3f", num))
}
.font(.largeTitle)
}
}
スライド範囲の設定方法
Slider(value: 値, in: スライド範囲)
下記のコードではスライド範囲を0から10までに設定しています。
![](https://darts25.com/wp-content/uploads/2022/09/e47daa86db3a6af65e61fa9721ee6362-1024x576.jpeg)
struct ContentView: View {
@State var num: Float = 0.0
var body: some View {
VStack {
Slider(value: $num, in: 0...10)
.frame(width: 200)
Text(String(format: "%.3f", num))
}
.font(.largeTitle)
}
}
スライド間隔の設定方法
Slider(value: 値, in: スライド範囲, step: スライド間隔)
下記のコードではスライド間隔を2にしています。
![](https://darts25.com/wp-content/uploads/2022/09/6589513cff7dd8eb3c6c03f208245411-1024x576.jpeg)
struct ContentView: View {
@State var num: Float = 0.0
var body: some View {
VStack {
Slider(value: $num, in: 0...10, step: 2.0)
.frame(width: 200)
Text(String(format: "%.3f", num))
}
.font(.largeTitle)
}
}
色の設定方法
.tint(バーの色)
![](https://darts25.com/wp-content/uploads/2022/09/89de41b6487986fe170469cdce9f05e6-1024x576.jpeg)
struct ContentView: View {
@State var num: Float = 0.0
var body: some View {
VStack {
Slider(value: $num)
.frame(width: 200)
.tint(.red)
Text(String(format: "%.3f", num))
}
.font(.largeTitle)
}
}
最大値最小値の表示
Slider(value: $num, minimumValueLabel: Text(最小値), maximumValueLabel: Text(最大値), label: {EmptyView()})
最小値と最大値をスライダーの左右に表示します。
labelのEmptyView()を書かないとエラーになるので、特に意味はないですが書いておきましょう。
![](https://darts25.com/wp-content/uploads/2022/09/2d5ed26da62ffa24750bf6cc59d7f2d6-1024x576.jpeg)
struct ContentView: View {
@State var num: Float = 0.0
var body: some View {
VStack {
Slider(value: $num, minimumValueLabel: Text("0.0"), maximumValueLabel: Text("1.0"), label: {EmptyView()})
.frame(width: 400)
Text(String(format: "%.3f", num))
}
.font(.largeTitle)
}
}
スライダー操作中の判定方法
Slider(value: 値, onEditingChanged: { bool in
フラグ = bool
})
スライダー操作中かどうかを判定することができます。
スライダーが操作されている間はフラグがtrueになり、操作されていない間はfalseになります。
![](https://darts25.com/wp-content/uploads/2022/09/43d9095feeca2023aa8c4c127d78c001-1024x576.jpeg)
![](https://darts25.com/wp-content/uploads/2022/09/db6b0ffc2ecd178e67df207479bf9d7e-1024x576.jpeg)
![](https://darts25.com/wp-content/uploads/2022/09/afee47db78c00a7805e2e8daf17338d4-1024x576.jpeg)
struct ContentView: View {
@State var num: Float = 0.0
@State var isEditing: Bool = false
var body: some View {
VStack {
Slider(value: $num, onEditingChanged: { bool in
self.isEditing = bool
})
.frame(width: 200)
Text(String(format: "%.3f", num))
if isEditing {
Text("Editing")
} else {
Text("No Editing")
}
}
.font(.largeTitle)
}
}
以上です。ご参考になれば幸いです。
コメント欄