👔

SwiftUI.Form内で画像を表示させる際に余白を消したい場合は.listRowInsets(.init())を使う

2024/03/25に公開

困る

SwiftUIでFormを使う時にImageを使うとCellの余白が画像に影響を受ける。

最初に結論

  • Form利用時のセルの余白はlistRowInsetsで制御する
    • 下記のどれでもいい
      • .listRowInsets(.init())
      • .listRowInsets(EdgeInsets())
      • .listRowInsets(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0))

具体的に困る時の例

例えば次のような感じで左右に余白ができている。ダークモードなんでわかりづらいと思うけど。

...
Form {
    Image(uiImage: image)
    ...
}
...

listRowInsets

この余白はlistRowInsetsで潰せる

...
Form {
    Image(uiImage: image)
        .listRowInsets(.init())
    ...
}
...

考え

  • .listRowInsets(.init())を使うのはListと一緒である
    • SwiftUIとしてListがまず先にあってFormがあとにできた
      • Listは内部がUITableViewっぽい、Formも同じくUITableViewっぽいね
    • ListでやれることはFormでやれそう
        • Section
      • 困ったらListについて調べるとよいかも

リンク

https://developer.apple.com/documentation/swiftui/view/listrowinsets(_:)

Discussion