【Swift UI】paddingの使い方まとめ!余白の指定方法

この記事からわかること

  • Swift UIpadding使い方
  • 上下左右余白指定するには?
  • 列挙型Edgeに指定できる
  • 余白のサイズ変更する方法

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

Swift UIで要素の余白を取る時に使うpaddingモディファイアの使い方をまとめました。

paddingの使い方

paddingモディファイアはTextButtonなどのView構造体に指定して余白を取るために使用します。

Swift UIで要素の余白をpaddingモディファイアで反映させている様子
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で要素の余白をpaddingモディファイアで反映させている様子

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

私がSwift UI学習に使用した参考書

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index