Как я могу сделать кучу вертикальных сайдеров в swiftUI - PullRequest
1 голос
/ 24 сентября 2019

Я пытаюсь создать группу (10 в тестовом коде, но 32 в действительности) вертикальных фейдеров, используя SwiftUI в приложении для iPad.Делая ползунки горизонтально, они растягиваются по экрану правильно.При вращении этих ползунков по вертикали они кажутся зафиксированными в своих горизонтальных размерах.Есть ли простой способ заставить слайдеры быть вертикальными?

Горизонтально (растягивается по экрану):

import SwiftUI

struct ContentView: View {
    @State private var sliderVal: Double = 0
    @State var values: [Double] = Array.init(repeating: 0.0, count: 10)

    var body: some View {
        VStack() {
            ForEach((0 ... 9), id: \.self) {i in
                HStack {
                    Text("\(i): ")
                    Slider(value: self.$values[i], in: 0 ... 100, step: 1.0)
                        .colorScheme(.dark)
                    Text("\(Int(self.values[i]))")
                }
            }
        }
    }
}

Переключение видов стека и вращение слайдеров (не работает):

struct ContentView: View {
    @State private var sliderVal: Double = 0
    @State var values: [Double] = Array.init(repeating: 0.0, count: 10)

    var body: some View {
        HStack() {
            ForEach((0 ... 9), id: \.self) {i in
                VStack {
                    Text("\(i): ")
                    Slider(value: self.$values[i], in: 0 ... 100, step: 1.0)
                        .colorScheme(.dark)
                        .rotationEffect(.degrees(-90))
                    Text("\(Int(self.values[i]))")
                }
            }
        }
    }
}

1 Ответ

0 голосов
/ 25 сентября 2019

Я сделал собственное представление VSlider ( источник на GitHub ) для решения этой проблемы.Он должен быть практически идентичен использованию Slider, как показано в демонстрационном примере ниже (хотя он не является универсальным, поэтому его следует использовать с Double).

VSlider demo

...