はじめに
SwiftUIではタブに使う画像のサイズをプログラム上から変更できません。
TabView {
Text("Foo")
.tabItem {
Text("iOS Osushi")
Image(.tabOsushi)
.resizable()
.frame(width: 31, height: 31) // !!!: 効かない
}
}

そのためSVGファイルを更新する必要があるのですが、サイズを指定する方法がわからなくて調べたので紹介します。
SVGのサイズを指定する
SVGをNeovimなどのテキストエディタで開き、 width
と height
を追加するだけです。
tab_osushi.svg
<?xml version="1.0" encoding="UTF-8"?>
- <svg id="_レイヤー_1" data-name="レイヤー 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400">
+ <svg id="_レイヤー_1" data-name="レイヤー 1" xmlns="http://www.w3.org/2000/svg" width="31px" height="31px" viewBox="0 0 400 400">
...
これだけでSVGのサイズを指定できます。
TabView {
Text("Foo")
.tabItem {
- Text("iOS Osushi")
- Image(.tabOsushi)
- .resizable()
- .frame(width: 31, height: 31) // !!!: 効かない
+ Label("iOS Osushi", image: .tabOsushi)
}
}

おわりに
SVGのサイズを指定する方法でした。
XMLを直接書き換えるのが少し不安なので、もっといい方法を知っている方がいたら教えてくださると嬉しいです