SwiftUIでScrollViewを使う
公開日: 2023-09-21 01:46:06
SwiftUIでScrollViewに横並びにボタン2つと縦のボタンを5つ並べるコード
構成と書き方はこんな感じ。
ScrollView {
// 縦方向のスタックビュー
VStack {
// 横方向のスタックビュー
HStack {
// ボタン2つ
}
// 縦にボタン5つ
}
}
コード
import SwiftUI
struct TopView: View {
var body: some View {
// 外部のスクロールビュー。内容が画面サイズを超えた場合にスクロールが可能になります。
ScrollView {
// GeometryReaderを使用して、親ビューのサイズや位置を取得できます。
GeometryReader { geometry in
// 縦方向のスタックビュー
VStack {
// 横方向のスタックビュー
HStack {
// 画面の5%分の左端のスペース
Spacer().frame(width: geometry.size.width * 0.05)
// 青色の"テスト1"ボタン
Button(action: {
print("テスト1ボタンがタップされました。")
}) {
Text("テスト1")
.font(.system(size: 30))
.frame(width: geometry.size.width * 0.35, height: 40)
.padding()
.background(Color.blue)
.foregroundColor(.white)
.cornerRadius(8)
}
// 画面の5%分の中央のスペース
Spacer().frame(width: geometry.size.width * 0.05)
// 緑色の"テスト2"ボタン
Button(action: {
print("テスト2がタップされました。")
}) {
Text("テスト2")
.font(.system(size: 30))
.frame(width: geometry.size.width * 0.35, height: 40)
.padding()
.background(Color.green)
.foregroundColor(.white)
.cornerRadius(8)
}
// 画面の5%分の右端のスペース
Spacer().frame(width: geometry.size.width * 0.05)
}
// ボタン群の上下のパディング
.padding(.vertical, 15)
// 5つのオレンジ色の"追加ボタン"
ForEach(0..<5) { _ in
Button(action: {
print("追加ボタンがタップされました。")
}) {
Text("追加ボタン")
.font(.system(size: 30))
.frame(width: geometry.size.width * 0.825, height: 40)
.padding()
.background(Color.orange)
.foregroundColor(.white)
.cornerRadius(8)
}
// ボタンとボタンの間の上下のスペース
.padding(.vertical, 15)
}
// VStackの下部にスペースを追加して、ボタン群を上部に押し上げる
Spacer()
}
}
// 全体のパディング
.padding()
}
}
}
実行結果はこんな感じになります。
ボタンのテキストやボタン押下時の処理の書き方に注目です。
