🕌

[随時更新] SwiftUIでのみ役立つTips

2024/03/17に公開

紹介しないTips

明らかにわかる不審な挙動、バグ対策は紹介しません。
レイアウト関するTipsも紹介しません。

紹介しない例

問題: SwiftUI.List内のセルにButtonを2つ以上置いた際に、タップ判定が取られてしまう。
対策: buttonStyleを設定する

ImageはTextにインライン化できる

Text("Hello \(Image(systemName: "heart"))!")

Viewの高さを揃える(Image)

SwiftUI.ImageをTextにインライン化することでViewの高さを揃えることができる

下の画像: 左のプラスボタンは高さがずれてしまっている

HStack {
  Button {
  } label: {
    Image(systemName: "plus")
  }
    
  Button("Button") {}
    
  Button {
  } label: {
    Text("\(Image(systemName: "plus"))")
  }
}
.padding(2)
.border(.red)
.buttonStyle(.bordered)

透明なButtonはタップできないが存在する

opacity(0)と設定するとButtonはタップできなくなります。
しかし透明なだけで場所は存在します。

VStack {
  Text("Hello")
  Button {
    print("Hello")
  } label: {
    Image(systemName: "heart")
      .resizable()
      .frame(width: 300, height: 300)
  }
  .opacity(0)
  .border(.red)
    
  Text("Hello")
}

Discussion