スクロールを実装する
Published by @SoNiceInfo at 6/25/2020
スクロールを実装するにはScrollView
、List
を使います。
ScrollView
ScrollView
を呼び出す際にはスクロールする方向、スクロールバーの表示非表示、中身を指定します。
横スクロールのときは.horizontal
で方向を指定し、中身をHStack
で構成します。
縦スクロールのときは.vertical
で方向を指定し、中身をVStack
で構成します。
今回の例では予め作成したEmojiTileというViewをHStack
で構成してScrollView
でスクロールできるようにしています。
実行例では実際に横スクロールしている様子を表示しています。
List
List
ではその名の通り、リスト形式のスクロールを実装することができます。
以下のコードのようにデータを渡してあげるとそのデータをリスト表示することができます。
例えば以下のようにすると、複数の動物情報を持つanimals
をリスト化します。
ここでは使いませんがデータがIdentifiable
プロトコルに準拠しているとリストの要素を追加、削除したときの動きをSwiftUI側で追えます。
struct Animal: Identifiable {
var id: Int
let name: String
}
List (animals) { animal in
Text(animal.name)
}
今回の例では各リストの項目に直にText
を利用しています。
実行例では実際にリストをスクロールしている様子を表示しています。
//
// ContentView.swift
//
import SwiftUI
struct ContentView: View {
var body: some View {
VStack () {
Spacer()
ScrollView(.horizontal, showsIndicators: false) {
HStack {
EmojiTile(text: "😀", color: .blue)
EmojiTile(text: "😉", color: .green)
EmojiTile(text: "😊", color: .purple)
EmojiTile(text: "😀", color: .blue)
EmojiTile(text: "😉", color: .green)
EmojiTile(text: "😊", color: .purple)
EmojiTile(text: "😀", color: .blue)
EmojiTile(text: "😉", color: .green)
EmojiTile(text: "😊", color: .purple)
}
}
Spacer()
List() {
Text("Hoge")
Text("Fuga")
}
Spacer()
}
}
}
struct EmojiTile: View {
var text: String
var color: Color
var body: some View {
Text(text)
.font(.custom("Emoji", size: 50))
.padding(50)
.background(color)
.cornerRadius(10)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
参考
ScrollView - SwiftUI | Apple Developer DocumentationList - SwiftUI | Apple Developer Documentation