web-dev-qa-db-ja.com

MacOSのSwiftUIのボタンに関する問題

MACOSでSwiftUIを使用しています

私がこれをすると:

      Button(action: { } ) {
        Text("Press")
        .padding()
        .background(Color.blue)
      }

私はこれを手に入れます:

enter image description here

2つの灰色の領域は、タップ可能なボタンの端です。ボタンが青い領域の形になると思います。青い領域全体をタップできるようにするためのアイデア。

(私は.onTapGestureの使用を検討しましたが、これはボタンをアニメーション化しないので、タップしたことがわかります。)

7
Adahus

私は、フィードバックアシスタントでAppleを使用してこれを挙げ、彼らに有用な考えがあるかどうかを確認しました。

ここでの対話:

私が言った:

MACOSでSwiftUIを使用している場合は、次のようにします。

  Button(action: { } ) {
    Text("Press")
    .padding()
    .background(Color.blue)
  }

側面に灰色のビットが2つ付いた青いボックスが表示されます。画像添付。これらは、2つの灰色の領域がタップ可能なボタンの端です。ボタンが青い領域の形になると思います。

同じコードがiOSで期待どおりに機能します。

(私は.onTapGestureの使用を検討しましたが、これはボタンをアニメーション化しないため、ボタンをタップしたことがわかります。)

アップルは言った:

iOSとmacOSには異なるデフォルトのButtonStylesがあります— iOSはボーダレスで、macOSは標準のベゼル効果を持っています。

カスタムButtonStyleを作成しようとしているようです(そのため、クロムがシステムに提供されていません)。そのため、その青い背景をボタンのラベルに適用し、それをテキスト付きのシンプルなボタンに適用することができます。

Button("Press"), action {}).buttonStyle(BluePaddingButtonStyle()

これにより、実行するすべてのプラットフォームで同じ外観になります。

私が言った:

こんにちは、説明ありがとうございます。私はあなたが言っていることを理解し、私が思いついた方法で大丈夫です。

それでもまだ正しくないようです。

  Button(action: { } ) {
    Text("Press")
    .padding()
    .background(Color.blue)
  }

とても奇妙に見えるものを生成するはずです。そのコードで青いボタンが生成されなかった理由がわかりません。

私が言ったように-私はそれを回避したのでそれは問題ではありませんが、それは現在直感的に見えません。

アップルは言った:

ViewBuilder内で提供されるコンテンツは、ボタン全体ではなく、ボタンのラベルとして使用されます。ボタンには、ButtonStyleで説明されているように、周囲の背景、ベゼル、前景のスタイルなどがまだ付属しています。したがって、ボタンが非常に特定の外観を持つ必要がある場合は、そのスタイルをカスタマイズする必要があります。BorderlessButtonStyle(ただし、特定の前景の外観スタイルがまだ付属していることに注意してください)またはカスタムButtonStyleのいずれかにします。

私の考え:

これは、なぜ実際に表示されるのかを理解するのに役立ちました。

1
Adahus