【Swift UI】paddingの使い方まとめ!余白の指定方法
この記事からわかること
- Swift UIのpaddingの使い方
- 上下左右に余白を指定するには?
- 列挙型Edgeに指定できる値
- 余白のサイズを変更する方法
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
Swift UIで要素の余白を取る時に使うpadding
モディファイアの使い方をまとめました。
paddingの使い方
padding
モディファイアはText
や Button
などのView
構造体に指定して余白を取るために使用します。
Text("Hello World")
.padding()
.background(Color.cyan)
引数に何も指定せずにpadding()
と指定した場合は要素の上下左右に適切な余白が自動で取られます。
定義を見てみると以下のようになっています。
func padding(
_ edges: Edge.Set = .all,
_ length: CGFloat? = nil
) -> some View
これが基本の形ではありますが記述形式は複数あるので注意してください。
余白のサイズを指定する
余白のサイズをカスタマイズしたい時は引数にCGFloat
型の値(数値でOK)を渡します。
func padding(_ length: CGFloat) -> some View
引数のlength
は省略可能なので以下のように数値を渡すだけでその数値分の余白が全体に取られます。
Text("Hello World").padding(10)
余白を上下左右別々に指定する
デフォルトでは自動で全方向へ余白を取ってくれますがEdgeInsets
構造体を用いると上下左右の余白を別々のサイズで指定することも可能です。
func padding(_ insets: EdgeInsets) -> some View
EdgeInsetsの定義
@frozen struct EdgeInsets (
top: CGFloat, // 上の余白
leading: CGFloat, // 左の余白
bottom: CGFloat, // 下の余白
trailing: CGFloat // 右の余白
)
使用例
Text("Hello World").padding(EdgeInsets(
top: 10, // 上の余白
leading: 100, // 左の余白
bottom: 10, // 下の余白
trailing: 100 // 右の余白
))
特定の方向のみに指定する
上下左右全方向ではなく、特定の方向のみに指定する場合は省略可能な引数edges
に列挙型Edge
の値を渡すことで指定できます。
func padding(
_ edges: Edge.Set = .all,
_ length: CGFloat? = nil
) -> some View
列挙型:Edge
@frozen enum Edge{
case top
case bottom
case leading
case trailing
}
デフォルトではこの値に全方向が指定する.all
が渡されていますが、別々に指定する時はその値を記述します。
指定値 | 概要 |
---|---|
.all | すべての辺 |
.top | 上側 |
.leading | 左側 |
.bottom | 下側 |
.trailing | 右側 |
.vertical | 上下 |
.horizontal | 左右 |
1方向に指定する
.padding(.top, 10)
複数方向に指定する
複数方向に指定する場合は配列形式で指定します。
.padding([.bottom, .trailing], 30)
指定する順番に注意
padding
に限った話ではないですがモディファイアを追加する際は指定する順番通りに反映されていくので注意が必要です。例えば以下の場合はpadding
部分には背景色が適応されません。
Text("Hello World")
.background(Color.cyan)
.padding()
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。
私がSwift UI学習に使用した参考書