0

私はまだSwiftUIに少し慣れていないので、完全には理解できない奇妙なケースに遭遇しています。基本的に、いくつかのテキスト ビューを含む VStack がありますが、バックグラウンド ビューもあります。理想的には、背景の幅を必要なだけ大きくしたいと思います。それが との目的だminWidthと思いますmaxWidth.frame()

私はこれで始めましたが、うまくいっているようです:

struct TestView: View {
    var body: some View {
        VStack {
            Text("Title")
            Text("Message")
        }
        .background(
            Rectangle()
                .foregroundColor(Color.blue)
                .frame(minWidth: 0,
                       maxWidth: 270)
                
        )
    }
}

ここに画像の説明を入力

これまでのところは問題ありませんが、テキストを折り返す必要があるほど大きくすると、これが得られます。

ここに画像の説明を入力

そのため、背景の周りにフレームを配置することで、最小/最大がその背景ビューに影響を与えるだけのようです。次に、フレームを VStack の周りに配置しようとすると、次のようになります。

struct TestView: View {
    var body: some View {
        VStack {
            Text("Title")
            Text("Message")
        }
        .frame(minWidth: 0,
               maxWidth: 270)
        .background(
            Rectangle()
                .foregroundColor(Color.blue)

                
        )
    }
}

ここに画像の説明を入力

私はそれを押し出す何かがあるとは思わないが、それでも maxWidth を完全に押し出す。

フレームをテキストに移動しようとしましたが、同じ結果が得られます。maxWidth までのコンテンツでのみ成長するバックグラウンドを持つ VStack を取得する正しい方法は何ですか?

ありがとうございました!

4

1 に答える 1