Open3

【SwiftUI】基本的なView構造体の使い方

104104

LazyHGrid / LazyVGrid

LazyVGrid(columns: columns, spacing: 15) {
//gridに並べるView
}
  • 垂直方向に伸びるグリッドを作成する。
  • イメージ的にはCSSのgridプロパティに近い?

columns

第1引数のcolumnsはGridItemという配列形式の構造体を渡す。

GridItemについては下のように第1引数にグリッドのサイズ、第2引数にスペーシングを設定する。

GridItem(.fixed(30), spacing: 1),

これをこのように配列化し、例えばLazyHGridに使う場合は1〜4行目までの振る舞いを記載することができる。

let rows = [
        GridItem(.fixed(30), spacing: 1),
        GridItem(.fixed(60), spacing: 10),
        GridItem(.fixed(90), spacing: 20),
        GridItem(.fixed(10), spacing: 50)
    ]

配列形式であれば良いので以下のようにArray構造体に引数repeatingとcountを渡して生成することも可能。

Array(repeating: GridItem(.flexible()), count: 7)

第1引数でフレキシブルなサイズを指定し、第2引数でそれを7回繰り返すことを定義している。

alignment

第2引数のaliginmentは位置を指定する。

.leading.trailing.centerから指定し、指定しない場合のデフォルト値は.center。

HorizontalAlignment

spacing

第3引数のspacingはCGFloat構造体を取る。

grid間のスペーシングを指定する。

104104

Listをスクロールさせない方法

  • ListViewはscrollableとなっており意図しない動きをしてしまうことがある。
  • StackOverflowにはForEachを使う方法も回答にあったが、配列やタプル型の中身を表示する訳ではない場合もあると思われる。
  • .scrollDisabled(true)をListビューのメソッドとして付け足せばスクロールされなくなる。

Disable scrolling in SwiftUI ScrollView and List