【SwiftUI】Formの中のSliderを幅いっぱいにしたいのにできない。MacOS

MacOS向けのAppを制作しています。

SliderをFormの中で使うとラベル部分と、スライダー部分で横に2分割されてしまいます。
下の写真が問題の現象。

結局解決策がわからず、Formを使うことを諦め、以下のようになんちゃってFormをVstackで作ることにしました。
結果的に以下のようにSliderを幅いっぱいに表示することができるようになりました。

いかになんちゃってFormのセクションの役割をするVStackを貼っておきます。

struct CustomVStack<Content: View>: View {
    let content: Content

    init(@ViewBuilder content: () -> Content) {
        self.content = content()
    }

    var body: some View {
        VStack(alignment: .leading, content: {
            content
        })
        .padding(.vertical, 12)
        .padding(.horizontal, 8)
        .frame(maxWidth: .infinity)
        .overlay(
            RoundedRectangle(cornerRadius: 4)
                .stroke(Color.gray, lineWidth: 0.5)
        )
    }
}

使用するときは以下のように別Viewから呼び出してあげればOKです。

CustomVStack {
    TextField("Text", text: $inputText)
        .font(.body)
    SizeSlider(textSize: $textSize)
    ColorPicker("Color", selection: $textColor)
}

CustomVStack {
    FolderColorPicker(folderColor: $folderColor)
}
コイアイちゃん Avatar

この記事を書いたのは


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA